2017-12-18 15 views
0

私は同じモデルクラスの2つの異なるインスタンスを使用する2つのファイルを持っています。Yii2複数のモデルを1つの形式で検証jsの検証

Test Case Video

$form->field($billing_address, 'zip', 
[ 
    'selectors' => [ 
     'input' => '#billing-zip', 
     'container' => '#billing-container', 
    ], 
    'options' => ['id' => 'billing-container'], 
])->textInput(['maxlength' => 11, 
       'name'=> 'Billing_Address[zip]', 
       'id'=>'billing-zip']); 

//Shipping 
$form->field($shipping_address, 'zip', 
[ 
    'selectors' => [ 
     'input' => '#shipping-zip', 
     'container' => '#shipping-container', 
    ], 
    'options' => ['id' => 'shipping-container'], 
])->textInput(['maxlength' => 11, 
       'name'=> 'Shipping_Address[zip]', 
       'id'=>'shipping-zip']); 

私が充填フィールドを終了すると、エラーはエラーがあるフィールドだけのために示されています。 しかし、私はジップフィールドのいずれかがエラーを持っている場合は、を提出押すと、エラーがすべてのzipフィールドのを表示さ

public function rules() 
{ 
     return [ 
      [['zip'], 'string', 'max' => 23], 
     ]; 
} 
+0

あなたのモデルルールを投稿してください。 –

+0

完了、問題を示すビデオを追加しました – user1713785

答えて

0

私はあなたのコントローラ内でこのようなものを使用することができると思う:

if(Model::loadMultiple($model_array, Yii::$app->request->post()) && Model::validateMultiple($model_array) && $model->validate()){ 
     //your stuff 
} 

$ model_arrayはモデルの配列です

$model_array['model1'] = new YourModelClass(); 
$model_array['model2'] = new YourModelClass(); 

Documentation

+0

コントローラーではなくJS検証で問題が発生しました。 – user1713785

+0

検証について[documentation](http://www.yiiframework.com/doc-2.0/guide-input-validation.html#client-side-validation)を読んだことがありますか?クライアントの検証を有効にしましたか?コードを表示してください。何か助けが必要な場合は –

+0

コードが最初のメッセージにあります。クライアントの検証は、プロプライエタリではありません。あなたが見るように、1つのモデルから2つの同じフィールドがあり、1つのフィールドが検証に合格しなければ、2番目のフィールドは同じエラーを表示します – user1713785

関連する問題