Yii - Second Model Fields Not Updating In Update Form

I’m using two models to display my data. I created relations between two models. Now, when I’m using update form to edit the fields I get the data of only the first model. But, the fields of second model are empty.But in admin.php, I can get fields of both the models populated. Why not in Update.php?

Below is the code for Update controller:




    public function actionUpdate($id)

    {       $model_al=new AuditLogin;    

                //$model_apt=new Apartment;    

    	//$model=$this->loadModel($id);

                 $model= ApartmentSettings::model()->findByPk($id);

                 $model_apt = Apartment::model()->findByAttributes(array('Id'=>$model->ApartmentId));

                

    

    

    	// Uncomment the following line if AJAX validation is needed

    	// $this->performAjaxValidation($model);

    

    	if(isset($_POST['ApartmentSettings'])&&isset($_POST['AuditLogin']))

    	{

    		

                    $model->attributes=$_POST['ApartmentSettings'];                                                                                                                                                                                       

                       

                        if($model->save())                                                   

                        $model_al->attributes=$_POST['AuditLogin'];                        

                        $approval=Yii::app()->getRequest()->getParam('approval');

                        echo $approval;

                        if ($approval==0)

                        {

                            

                            $model_al->moduleId="1001";

                            $model_al->content=$model->GreetingsApprovedSMSText;

                            $greet_approve=$model->GreetingsApproval;

                            if ($greet_approve==0)

                            $model_al->activity="Greetings approval rejected";

                            else     

                            $model_al->activity="Greetings approval accepted";

                        echo $approval;

                            

                        }

                        elseif($approval==1){

                            

                        $model_al->moduleId="1002";

                        $model_al->content=$model->ContactApprovedSMSText;                        

                        $contact_approve=$model->ContactApproval;

                        if ($contact_approve==0)

                        $model_al->activity="Contact approval rejected";

                        else     

                        $model_al->activity="Contact approval accepted";                                                    

                        

                        }  

                        

                        elseif($approval==2)

                        {                                                    

                        if(isset($_POST['Apartment']))                    

                        $model_apt->attributes=$_POST['Apartment'];    

                        $model_al->moduleId="1004";

                        $model_al->activity="Microsite fields updated";                 

                        $model_al->content=$_POST['Apartment']['MetatagsDesc'];                        

                        $model_apt->save();                        

                        

                        }

                        

                        if($model_al->save())                            

    			$this->redirect(array('admin','id'=>$model->Id));

                }

                

                

                      

                

    	$this->render('update',array(

    		'model'=>$model,'model_apt'=>$model_apt

    	));

    }

Below is the code for Update.php :


<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>

Below is the code for _form.php


    <?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'apartment-settings-form',

	'enableAjaxValidation'=>false,

    )); ?>


    <?php

    $approved=$_GET['approval'];

    ?>


    <?php 

    $model_apt=new Apartment;

    echo $form->errorSummary($model); 

    $model_al=new AuditLogin; 

    

    ?>




    <?php if($approved==0){?>

    	<div class="row">

	<?php echo $form->labelEx($model,'GreetingsApproval'); ?>

        <?php echo $form->radioButtonList($model, 'GreetingsApproval',

                    array(  1 => 'Approved',

                            0 => 'Rejected',

 ),                 array(

    'labelOptions'=>array('style'=>'display:inline'), // add this code

    'separator'=>'  ',

) );

 ?>

	<?php echo $form->error($model,'GreetingsApproval'); ?>

	</div>

        <div class="row">

	<?php echo $form->labelEx($model,'GreetingsApprovedSMSText'); ?>

	<?php echo $form->textArea($model,'GreetingsApprovedSMSText',array('rows'=>6, 'cols'=>50)); ?>

	<?php echo $form->error($model,'GreetingsApprovedSMSText'); ?>

	</div>


    

    

        <?php } elseif($approved==1){?>    

        <div class="row">

        <?php echo $form->labelEx($model,'ContactApproval'); ?>

        <?php echo $form->radioButtonList($model, 'ContactApproval',

                    array(  1 => 'Approved',

                            0 => 'Rejected',

 ),		  

                   array(

    'labelOptions'=>array('style'=>'display:inline'), // add this code

    'separator'=>'  ',

) );

?>		

        <?php echo $form->error($model,'ContactApproval'); ?>

        </div>

        <div class="row">

        <?php echo $form->labelEx($model,'ContactApprovedSMSText'); ?>

        <?php echo $form->textArea($model,'ContactApprovedSMSText',array('rows'=>6, 'cols'=>50)); ?>

        <?php echo $form->error($model,'ContactApprovedSMSText'); ?>

        </div>


    <?php }else{ ?>

    <div class="row">

		<?php echo $form->labelEx($model,'ApartmentId'); ?>

		<?php echo $form->textField($model,'ApartmentId',array('readonly' => true)); ?>

		<?php echo $form->error($model,'ApartmentId'); ?>

    </div>

    

    <div class="row">        

    <?php echo $form->labelEx($model_apt, 'GroupzDescription'); ?>            

    <?php echo $form->textField($model_apt, 'GroupzDescription',array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_apt, 'GroupzDescription'); ?>

    </div>


    <div class="row">

    <?php echo $form->labelEx($model_apt, 'Latitude'); ?>            

    <?php echo $form->textField($model_apt, 'Latitude', array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_apt, 'Latitude'); ?>

    </div>

            

    <div class="row">        

    <?php echo $form->labelEx($model_apt, 'Longitude'); ?>            

    <?php echo $form->textField($model_apt, 'Longitude', array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_apt, 'Longitude'); ?>

    </div>

            

    <div class="row">        

    <?php echo $form->labelEx($model_apt, 'MetatagsDesc'); ?>            

    <?php echo $form->textArea($model_apt, 'MetatagsDesc',array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_apt, 'MetatagsDesc'); ?>

    </div>

    

    <div class="row">        

    <?php echo $form->labelEx($model_apt, 'MetatagsKeywords'); ?>            

    <?php echo $form->textArea($model_apt, 'MetatagsKeywords',array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_apt, 'MetatagsKeywords'); ?>

    </div>


    <?php }?>


    <div class="row">

    <?php echo $form->labelEx($model_al, 'username'); ?>

    <?php $identity=Yii::app()->user->name;?>

    <?php echo $form->textField($model_al, 'username',array('value'=>$identity,'readonly' => true), array('size' => 60, 'maxlength' => 250)); ?>

    <?php echo $form->error($model_al, 'username'); ?>

    </div>

            

    <div class="row">        

        <?php echo $form->labelEx($model_al, 'updatedtime'); ?>            

        <?php echo $form->textField($model_al, 'updatedtime',array('value'=>date('Y-m-d H:i:s'),'readonly' => true), array('size' => 60, 'maxlength' => 250)); ?>

        <?php echo $form->error($model_al, 'updatedtime'); ?>

        </div>

            

         <div class="row">        

        <?php echo $form->labelEx($model_al, 'comments on approval/rejection'); ?>            

        <?php echo $form->textField($model_al, 'comments',array('size' => 60, 'maxlength' => 250)); ?>

        <?php echo $form->error($model_al, 'comments'); ?>

        </div>


        <div class="row buttons">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>

	</div>




in your update.php

you render only $model, what about $model_apt, and $model_al ?

$model_al which is not render in your controller aswell

Don’t create your model in your view… it’s not yii friendly, you have to do it in your controller and send them by render and renderPartial method.

have a look :

Rudra

In your ‘_form.php’, in the following code:


 

 <?php

    $approved=$_GET['approval'];

    ?>


    <?php 

    $model_apt=new Apartment;

    echo $form->errorSummary($model); 

    $model_al=new AuditLogin; 

    

    ?>




Remove


$model_apt = new Apartment; 

 $model_al=new AuditLogin; 



You’ve already declared those variables in your controller.

You’ve changed your ‘update.php’ since I first posted. In your ‘update.php’, change


<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>

to


<?php $this->renderPartial('_form', array('model'=>$model, 'model_apt'=>$model_apt, 'model_a1'=>$model_a1)); ?>



In your controller, under actionUpdate(), change


 $this->render('update',array(

                'model'=>$model,'model_apt'=>$model_apt

        ));

to


 $this->render('update',array(

                'model'=>$model,'model_apt'=>$model_apt,'model_a1'=>$model_a1

        ));