2013-09-23 35 views
1

客戶端驗證如何觸發?因爲這樣的代碼:Yii CActiveForm客戶端和ajax驗證行爲

<? $form = $this->beginWidget('CActiveForm',array(
'id' => 'user-register', 
'enableAjaxValidation'=>true, 
'enableClientValidation'=>true, 
'clientOptions'=>array(
    'validateOnSubmit'=>true, 
    'afterValidate' => "js: function(form, data, hasError) { 
     console.log(data); 
     return false; 
    }" 
))); 
?> 

<?= $form->errorSummary($user); ?> 

<?= $form->textField($user, 'email'); ?> 
<?= $form->error($user,'email'); ?> 
<? $this->endWidget() ?> 

工作正常(顯示電子郵件字段誤差都在errorSummary()和錯誤()方法在用戶模型中描述的,但後來我刪除

<?= $form->error($user,'email'); ?> 

客戶端驗證沒有按」牛逼觸發和形式submited

相同的行爲也適用於AJAX驗證

+0

有關特定框架,庫或資源如何工作的問題,您應該改爲在其論壇上發佈。這是無關緊要的。 –

+3

@SamuelLiew,他們爲什麼不應該被允許在這裏?如果是這樣的話,就不需要'yii'標籤,'rails'標籤或'codeigniter'標籤 –

+1

@ThorpeObazee我從來沒有說過Yii的問題是無關緊要的。這個問題對於詢問Yii框架如何工作而言過於寬泛。如果你認爲它不是,那麼回答它(我會看你如何嘗試)。此外,這個問題還不清楚,因爲沒有具體問題,OP沒有具體說明他需要完成什麼。如果你有問題,請在[meta]上提出。 –

回答

0

如果我理解你很好,你必須把控制器:

$this->performAjaxValidation($model); 

之前:

if (isset($_POST['User'])) 

然後,找到函數performAjaxValidation(在相同的控制器)和更改默認字符串用戶註冊,像:

protected function performAjaxValidation($model) 
{ 
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'user-register') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 
}