2014-01-24 61 views
0

我在yii中使用CActiveForm創建了一個表單。我正在使用ajax使用CHtml :: ajaxSubmitButton提交表單。使用Ajax表單提交工作正常,我可以使用$ _POST ['modelname'] ['fieldname']獲得控件中的值。但是ajax表單驗證工作不正常。以下是代碼CActiveForm 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']不起作用?請幫忙。 在此先感謝。

+1

add'<?php echo $ form-> errorSummary($ models);在你的表格中。 –

+0

@kumar_v我嘗試過,但它不工作。 – user1690835

+0

使用'enableClientValidation'=> true嘗試客戶端驗證爲真 –

回答

1

我已經通過使用CHtml :: submitButton而不是CHtml :: ajaxSubmitButton來解決此問題,然後使用jQuery $ .ajax函數以'afterValidate'選項提交表單。請看詳細信息here