簡體   English   中英

Yii ajaxform驗證僅驗證表單的一部分

[英]Yii ajaxform validation only validates a part of the form

我得到了一個Yii表格,該表格收集了三個模型的數據。 我在更改和提交時使用ajaxvalidation:

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'offer-form',
    'enableAjaxValidation'=>true,
    'enableClientValidation'=>true,
    'clientOptions' => array(
        'validateOnChange'=>true,
        'validateOnSubmit'=>true,
    )   
)); ?>

現在的問題是,只有前三個輸入得到驗證,這些輸入的代碼:

1:

<div class="input-bg wide-input">

                    <?php 
                    //fill this field after selecting newspaper
                    echo $form->hiddenField($newspaper, 'id'); ?>
                    <?php echo $form->textField($newspaper, 'name', array('maxlength' => 45, 'placeholder'=>'Krantnaam')); ?>
                    <?php echo $form->error($newspaper, 'name', array('class'=>'error')); ?>
                </div>
                <a class="button gray-button">Aanbieden</a>

2和3:

<div class="input-bg linked-input">
                    <?php echo $form->textField($address, 'postalcode', array('maxlength' => 45, 'placeholder'=>'Postcode')) ?>
                    <?php echo $form->error($address, 'postalcode'); ?>
                </div>

                <div class="input-bg linked-input">
                    <?php echo $form->textField($address, 'street_number', array('maxlength' => 45, 'placeholder'=>'Huisnummer')); ?>
                    <?php echo $form->error($address, 'street_number'); ?>
                </div>

這三個輸入用於兩個模型$newspaper and $address 現在的情況是,這三個輸入都經過了完美驗證(在更改和提交時),而其他七個輸入沒有得到驗證,其中一個輸入未經驗證的示例:

 <div class="input-bg linked-input">
            <?php echo $form->textField($offer, 'firstname', array('maxlength' => 45, 'placeholder'=>'Voornaam')); ?>
            <?php echo $form->error($offer, 'firstname'); ?>
        </div>

最后,我將發布我的控制器代碼:

$this->performAjaxValidation($offer, 'offer-form');
$this->performAjaxValidation($address, 'offer-form');
$this->performAjaxValidation($newspaper, 'offer-form');

if(Yii::app()->getRequest()->getIsAjaxRequest()) {
    echo CActiveForm::validate( array($address));  
    echo CActiveForm::validate( array($offer));
    echo CActiveForm::validate( array($newspaper)); 
    print_r($_POST);
    die();
    //Yii::app()->end(); 
}

如果我提交或更改表單,我確實會返回JSON並帶有未經過驗證的字段的錯誤,但它們不會出現錯誤狀態。

我希望有人可以看到錯誤或其他任何東西。

格蕾茲

一旦發現錯誤,它返回的原因是在驗證模型后, performAjaxValidation調用Yii::app()->end() 為了驗證幾種模型,請使用以下方法

protected function performTabularAjaxValidation($models, $form = null) {
    if (Yii::app()->getRequest()->getIsAjaxRequest() && (($form === null) || ($_POST['ajax'] == $form))) {
        echo CActiveForm::validateTabular($models);
        Yii::app()->end();
    }
}

並在您的控制器方法中

$this->performTabularAjaxValidation(array($address,$offer,$newspaper),'offer-form');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM