Yii 控制器验证ajax提交的数据的两种方式

本文详细介绍了在Yii框架中利用CActiveForm进行Ajax验证的方法,包括如何在控制器中实现验证方法、两种不同的验证场景及前端验证配置。同时强调了Ajax验证在错误信息显示和用户体验提升方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一:

在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()来调用验证结果返回到前端页面中。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值