Ayuda para principiante practica en yii

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([

&quot;method&quot; =&gt; &quot;post&quot;,


'enableClientValidation' =&gt; 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.

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