方式一:
在Controller中,封装一个专门验证Ajax请求的方法,其中可通过CActiveForm::validate($model);来验证Model中的rule规则。
在控制器中调用验证方法:
$this->performAjaxValidation( $objModel );
并将这个方法写在控制器中:
/**
* Performs the AJAX validation.
* @param $model the model to be validated
*/
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='activity-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
方式二:
if ( $objFinancingAutoBid->validate() ){
$objFinancingAutoBid->save();
}else {
if( Yii::app()->request->isAjaxRequest ){
$errInfo = $objFinancingAutoBid->getErrors();
echo CJSON::encode( $errInfo );
Yii::app()->end();
}
}
说明:
情况1:如果前端是用CActiveForm来验证:
<?php $form=$this->beginWidget('CActiveForm',
array(
'id'=>'contact_form',
'enableAjaxValidation'=>true//是否是ajax验证
/'enableClientValidation'=>true,//是否客户端验证 //'action'=>'site/contact',
//'method'=>'get',
)
); ?>
<pre name="code" class="php"> <div class="row">
<?php echo $form->labelEx($model,'Title'); ?>
<?php echo $form->textField($model,'Title',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'Title'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? '添加' : '保存'); ?>
</div>
<?php $this->endWidget(); ?>
强调说明:
<?php echo $form->error($model,'Title'); ?>
就可以将对应属性的错误显示出来!(Ajax验证或者服务器验证(调用save()方法或者$objModel->validate()方法)都可以将验证出来的错误信息显示在前端)。
情况2:如果前端未使用CActiveForm来验证:
则需要通过Js,或者Jquery(推荐)$.ajax()来调用验证结果返回到前端页面中。