【问题标题】:CActiveForm ajax validation error not displaying in the formCActiveForm ajax 验证错误未显示在表单中
【发布时间】: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'] 不工作?请帮忙。 提前致谢。

【问题讨论】:

  • 在您的表单中添加&lt;?php echo $form-&gt;errorSummary($models); ?&gt;
  • @kumar_v 我试过了,但它不起作用。
  • 尝试客户端验证为真
  • 如果 'enableClientValidation'=>true,当焦点超出 'brand_name' 字段时会显示错误。提交表单时没有显示错误。
  • 嗨,你找到解决办法了吗?

标签: ajax yii


【解决方案1】:

我已经通过使用 CHtml::submitButton 而不是 CHtml::ajaxSubmitButton 解决了这个问题,然后在表单“afterValidate”选项中使用 jQuery $.ajax 函数提交表单。详情请看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2018-04-19
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多