Form Validation Problem for Update process

Hi

I would like to request your suggestion for my problem.

I have an Address book table. I want to update the address book table using the CActiveRecord with Form validation.

When I used the validation() method, it cannot validate the form. Please help me to solve my problem.

I created the rule in my model.

public function rules()

{


	


	return array(			


                    array('firstname, lastname, street_address, postcode, city, telephone', 'required', 'on'=>'update'),


                    array('bill_firstname, bill_lastname, bill_street_address, bill_postcode, bill_city, bill_telephone', 'required', 'on'=>'update'),


                    array('delivery_firstname, delivery_lastname, delivery_street_address, delivery_postcode, delivery_city, delivery_telephone', 'required', 'on'=>'update'),


		array('bill_country_id', 'numerical', 'integerOnly'=>true),


                    array('delivery_country_id', 'numerical', 'integerOnly'=>true),


                    array('customers_id, country_id', 'numerical', 'integerOnly'=>true),


		


		array('company, firstname, lastname, street_address, suburb, postcode, city, state, telephone, fax', 'length', 'max'=>255),


                    array('bill_firstname, bill_lastname, bill_street_address, bill_suburb, bill_postcode, bill_city, bill_state, bill_telephone, bill_fax', 'length', 'max'=>255),


                    array('delivery_firstname, delivery_lastname, delivery_street_address, delivery_suburb, delivery_postcode, delivery_city, delivery_state, delivery_telephone, delivery_fax', 'length', 'max'=>255),


		array('_checkBilling, _checkDelivery', 'safe', 'on'=>'create'),


                    


                    // The following rule is used by search().


		// Please remove those attributes that should not be searched.


		array('address_book_id, customers_id, gender, company, firstname, lastname, street_address, suburb, postcode, city, state, country_id, zone_id, telephone, fax,


                        bill_firstname, bill_lastname, bill_street_address, bill_suburb, bill_postcode, bill_city, bill_state, bill_country_id, bill_telephone, bill_fax,


                        delivery_firstname, delivery_lastname, delivery_street_address, delivery_suburb, delivery_postcode, delivery_city, delivery_state, delivery_country_id, delivery_telephone, delivery_fax', 'safe', 'on'=>'search'),


	);


}

In Action class,

public function actionUpdate()

{


        $model = new TsAddressBook('update');


        $model->setIsNewRecord(false);





     


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


        {

//Get Address Book Id

            $_addressbookId = Yii::app()->user->getState('sesAddressBookId');


           


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


            $model->address_book_id = $_addressbookId;


            





            if($model->validate()) {


               


                $model->address_book_id = Yii::app()->user->getState('sesAddressBookId');


                $model->customers_id= TsCustomers::model()->getLoginUserId();


                





                if($model->save(false))


                    $this->redirect(array('view','id'=>$model->address_book_id));


            }


            


            


            


        }            


        else {


                            


            // Set Customer Id retrieved from Session to the AddressBook model


            $model->customers_id = $model->getLoginUserId();


            


            $dataProviderForAddressBook = $model->search();





            // If the address book is already installed


            if($dataProviderForAddressBook !== null && $dataProviderForAddressBook->getTotalItemCount() > 0)


            {


                $tsAddressBookList = $dataProviderForAddressBook->getData();


                $model = $tsAddressBookList[0];


                


                if($model !== null)


                {


                    Yii::app()->user->setState('sesAddressBookId', $model->address_book_id);


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


                        'model'=>$model,


                    ));


                }


            }


        }


}

In the View page,

<p class="note">Fields with <span class="required">*</span> are required.</p>

&lt;?php echo &#036;form-&gt;errorSummary(&#036;model); ?&gt;





    &lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;


        &lt;tr&gt;


            &lt;td colspan=&quot;2&quot; class=&quot;colourrow&quot;&gt;&lt;h4&gt;Contact Address&lt;/h4&gt;&lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'company'); ?&gt;&lt;/td&gt;


            &lt;td colspan=&quot;2&quot; &gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'company',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'company'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td colspan=&quot;2&quot;&gt;Contact Person&lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'firstname'); ?&gt;&lt;/td&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;textField(&#036;model,'firstname',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'firstname'); ?&gt;


            &lt;/td&gt;





        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'lastname'); ?&gt;&lt;/td&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;textField(&#036;model,'lastname',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'lastname'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'street_address'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'street_address',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'street_address'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'suburb'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'suburb',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'suburb'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'postcode'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'postcode',array('size'=&gt;20,'maxlength'=&gt;60)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'postcode'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'city'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'city',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'city'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'state'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'state',array('size'=&gt;60,'maxlength'=&gt;255)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'state'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'country_id'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'country_id'); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'country_id'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'telephone'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'telephone',array('size'=&gt;20,'maxlength'=&gt;60)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'telephone'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;


        &lt;tr&gt;


            &lt;td&gt;&lt;?php echo &#036;form-&gt;labelEx(&#036;model,'fax'); ?&gt;&lt;/td&gt;


            &lt;td&gt;


                &lt;?php echo &#036;form-&gt;textField(&#036;model,'fax',array('size'=&gt;20,'maxlength'=&gt;60)); ?&gt;


                &lt;?php echo &#036;form-&gt;error(&#036;model,'fax'); ?&gt;


            &lt;/td&gt;


        &lt;/tr&gt;

</table>

<div class="row buttons">

	&lt;?php echo CHtml::submitButton(&#036;model-&gt;isNewRecord ? 'Create' : 'Save'); ?&gt;


            &lt;?php echo MyHtml::button('Cancel', array('id'=&gt;'butCancel')); ?&gt;


&lt;/div&gt;

I appreciate your help.

Hi,

The $model->validate() method returns False value. How should I do to get True when doing validation?

Please suggest me.

Thanks

Win Naung

It return false because some validation rules fail.

Try


print_r($model->errors)

after validating. You will see which validator failed

Hi Zaccaria,

Thanks for your help. I could find the error. When I show that Update page back after the validation was fail, the error list can be seen in the Error panel of the Update page.

Any way thank you for your reply.

Win