Yii Framework Forum: Ayuda para principiante practica en yii - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ayuda para principiante practica en yii Rate Topic: -----

#1 User is offline   engel64 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 23-November 17

Posted 23 November 2017 - 12:41 PM

hola estoy aprendiendo a utilizar el activeRecord para hacer unos registros, eliminarlos y modificarlos en la base de datos,
de prueba en prueba y tutoriales en internet logre enlazarlo a la base de datos, mostrar en pantalla esos registros y eliminarlos pero tengo problemas intentando de actualizar estos registros ya que me muestra el formulario pero me dice que el registro no ha sido encontrado.

este es el codigo que le he agregado. Pienso que debo estar cometiendo un error en algun lugar pero no lo encuentro.

en el SiteController:

public function actionUpdate()
{
$model = new FormAsesores;
$msg = null;

if($model->load(Yii::$app->request->post()))
{
if($model->validate())
{
$table = Asesores::findOne($model->CodAsesor);
if($table)
{
$table->Identificacion = $model->Identificacion;
$table->Nombres = $model->Nombres;
$table->Cargo = $model->Cargo;
$table->Celular = $model->Celular;
$table->Email = $model->Email;
$table->Foto = $model->Foto;
if ($table->update())
{
$msg = "El asesor ha sido actualizado correctamente";
}
else
{
$msg = "El asesor no ha podido ser actualizado";
}
}
else
{
$msg = "El asesor seleccionado no ha sido encontrado";
}
}
else
{
$model->getErrors();
}
}


if (Yii::$app->request->get("CodAsesor"))
{
$CodAsesor = Html::encode($_GET["CodAsesor"]);
if ((int) $CodAsesor)
{
$table = Asesores::findOne($CodAsesor);
if($table)
{
$model->Identificacion = $model->Identificacion;
$model->Nombres = $model->Nombres;
$model->Cargo = $model->Cargo;
$model->Celular = $model->Celular;
$model->Email = $model->Email;
$model->Foto = $model->Foto;
}
else
{
return $this->redirect(["site/view"]);
}
}
else
{
return $this->redirect(["site/view"]);
}
}
else
{
return $this->redirect(["site/view"]);
}
return $this->render("update", ["model" => $model, "msg" => $msg]);
}


el archivo update.php:

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\helpers\Url;
?>

<a href="<?= Url::toRoute("site/view") ?>">Ir a la lista de asesores</a>

<h1>Editar asesor con id <?= Html::encode($_GET["CodAsesor"]) ?></h1>

<h3><?= $msg ?></h3>

<?php $form = ActiveForm::begin([
"method" => "post",
'enableClientValidation' => true,
]);
?>

<?= $form->field($model, "CodAsesor")->input("hidden")->label(false) ?>

<div class="form-group">
<?= $form->field($model, "Identificacion")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Nombres")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Cargo")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Ext")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Celular")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Email")->input("text") ?>
</div>

<div class="form-group">
<?= $form->field($model, "Foto")->input("text") ?>
</div>


<?= Html::submitButton("Actualizar", ["class" => "btn btn-primary"]) ?>

<?php $form->end() ?>


disculpen es que soy nuevo en esto y realmente tengo tiempo buscando a ver el error que tengo y no lo encuentro solo lo posteo a ver si alguno encuentra el error. y gracias de antemano.

Attached File(s)


0

#2 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 273
  • Joined: 11-July 13

Posted 24 November 2017 - 03:50 PM

Hola engel64, bienvenido por aquí,

En un caso general las funciones create y update son muy similares, mira la diferencia
public function actionCreate()
{
   $model = new FormAsesores;
   if($model->load(Yii::$app->request->post())) {
       //acciones
   }
   return $this->render("create", ["model" => $model]);
}

public function actionUpdate($id)  /// <-- debes decir que registro se actualiza
{
   $model = $this->findModel($id);
   if($model->load(Yii::$app->request->post())) {
       //acciones
   }
   return $this->render("update", ["model" => $model]);
}


En tu caso la 1ª vez que vas al formulario no se entra en los bloques if, el modelo esta vacio y en la vista el campo CodAsesor estará vacio, de ahí el mensaje que te muestra.

saludos
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users