【发布时间】:2014-01-24 05:43:19
【问题描述】:
我在 yii 中使用 CActiveForm 创建了一个表单。我正在使用 ajax 使用 CHtml::ajaxSubmitButton 提交表单。使用 ajax 的表单提交工作正常,我可以使用 $_POST['modelname']['fieldname'] 获取控件中的值。但是 ajax 表单验证无法正常工作。下面是代码
<?php
$form=$this->beginWidget('CActiveForm', array(
'id'=>'item-brand-form',
'enableAjaxValidation' => true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
'htmlOptions'=>array(
'class'=>'form-horizontal',
),
)); ?>
<div class="form-group">
<?php echo $form->labelEx($model,'Brand Name',array('class'=>'control-label col-lg-4','for'=>'ItemBrand_brand_name')); ?>
<div class="col-lg-6">
<?php echo $form->textField($model,'brand_name',array('class'=>'form-control')); ?>
<?php echo $form->error($model,'brand_name'); ?>
</div>
<!-- End col-lg-6 -->
</div><!-- End Form Group -->
<div class="form-group">
<?php echo $form->labelEx($model,'Brand Code',array('class'=>'control-label col-lg-4','for'=>'ItemBrand_brand_code')); ?>
<div class="col-lg-6">
<?php echo $form->textField($model,'brand_code',array('class'=>'form-control')); ?>
</div>
<!-- End col-lg-6 -->
</div><!-- End Form Group -->
<div class="form-group">
<div class="col-lg-4"></div>
<div class="col-lg-2">
<?php echo CHtml::ajaxSubmitButton('Apply',array('class'=>'btn btn-lg btn-primary')); ?>
</div>
</div>
<?php $this->endWidget(); ?>
同样在控制器动作中,下面的代码也不起作用。
if(isset($_POST['ajax']) && $_POST['ajax']==='item-brand-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
所以我使用的是
if(Yii::app()->getRequest()->getIsAjaxRequest())
{
echo CActiveForm::validate( array( $model));
Yii::app()->end();
}
在浏览器中检查时,我得到了响应
{"ItemBrand_brand_name":["Brand Name cannot be blank."]}
但错误消息未显示在表单中。还有为什么 $_POST['ajax'] 不工作?请帮忙。 提前致谢。
【问题讨论】:
-
在您的表单中添加
<?php echo $form->errorSummary($models); ?>。 -
@kumar_v 我试过了,但它不起作用。
-
尝试客户端验证为真
-
如果 'enableClientValidation'=>true,当焦点超出 'brand_name' 字段时会显示错误。提交表单时没有显示错误。
-
嗨,你找到解决办法了吗?