2017-08-28 21 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'], 
    ]; 
} 

私はあなたが好きなことを修正することができますので、あなたのモデルは、バックエンドであることを確認していません。私は「状態を書いた上記のコードでは、

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

は注意してください:最初のフォームで

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); 
    }  
} 

一歩、:コントローラで

あなたがそのような関数を作成する必要があります/ validation '、' state 'は、検証アクションを入力するコントローラの名前です。

+0

今は動作しています! –

+0

ありがとうございました! –

0

あなたは例えばのActiveForm

enableAjaxValidationを設定する必要があります。

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

残念ながら、それは動作していません... –

0

を多分私は、私は再びそれを試すようにあまり良くない問題を説明してきました。 問題は、条件付き検証は、が保存/作成時にをクリックした後にのみ機能することです。お使いのモデルで

関連する問題