2017-08-28 45 views
0

Yii2我在model.php中有條件驗證。 當我在文本字段中寫入未通過驗證的內容時,離開字段後不會顯示錯誤消息。 只有在klick創建後出現錯誤消息。 在字段中寫入內容後,我需要做什麼才能顯示消息。Yii2客戶端驗證

<?php 
['state', 'required', 'when' => function ($model) { 
    return $model->country == 'USA'; 
}, 'whenClient' => "function (attribute, value) { 
    return $('#country').val() == 'USA'; 
}"] 

回答

0

在你的模型:

public function rules() 
{ 
    return [ 
     ['state', 'required', 'targetClass' => '\backend\models\State', 
     'message' => 'Your message here'], 
    ]; 
} 

我不知道你的模型是在後臺,所以你可以糾正你想要的。

在控制器必須創建這樣的功能:在開始你的形式

public function actionValidation(){ 
    $model = new State(); 
    if(Yii::$app->request->isAjax && $model->load(Yii::$app-> 
    request->post())){ 
     Yii::$app->response->format = 'json'; 
     return ActiveForm::validate($model); 
    }  
} 

的一個步驟,:

<?php $form = ActiveForm::begin(
       [ 
        'enableAjaxValidation' => true, 
        'validationUrl' => Url::toRoute('state/validation') 
       ] 
     ); ?> 

要小心,在上面的代碼,我寫「狀態/ validation','state'是你放置驗證操作的控制器的名稱。

+0

現在它的工作! –

+0

非常感謝! –

0

應設置enableAjaxValidation中的ActiveForm

例如:

$form = ActiveForm::begin([ 
    'id' => 'contact-form', 
    'enableAjaxValidation' => true, 
]); 
+0

不幸的是,這不工作... –

0

也許我所描述的問題不是那麼好,所以我再次嘗試。 問題是條件驗證僅在單擊保存/創建後才起作用。