2016-03-30 6 views
2

に変更シナリオをビューページでjQueryで変更したい。 フォームにチェックボックスがあり、チェックボックスに入力ボックスが必要です。フォームをYii2

私のルール:

public function rules() { 
     return [ 
       . 
       . 
       . 
       ['pass' , 'required', 'on'=> 'checked'] 
     ] 
} 

私の見解ページ:

public function rules() { 
    $checkBoxID = Html::getInputId($this, 'check'); 

    return [ 
     /* other rules */ 
     ['pass' , 'required', 
      'when' => function($model) { 
       return $model->check; 
      }, 
      'whenClient'=> "function(attribute, value){ 
       return $('#{$checkBoxID}').prop('checked'); 
      }", 
      'on' => 'checked' 
     ], 
    ]; 
} 

conditional validationwhenClient validator propertyを読むようにルールを設定するには

<?=$form->field($model, 'check')->checkbox()?> 
<?=$form->field($model, 'Pass')->textInput(['maxlength' => 20])?> 
+0

後に任意の検証を行う前に、私は回答を削除しているのどちらか...。あなたがシナリオなしでローカルのjqueryの検証を行う場合は、おそらくより良いajaxの検証は、クライアント側の検証をしたい... – scaisEdge

答えて

4

してみてください。シナリオをより有益な名前にすることも検討してください。その目的によって、'on' => 'sign-up'、または​​のようになります。シナリオは、特定の場合に適用するルールが必要な場合に便利ですが、このシナリオを明示的に指定する必要があります。あなたがモデルをインスタンス化

$model = new MyModel(); 
$model->scenario = 'sign-up'; 

とビューにそれを渡し、またはjqueryの.validatioではなくyii2シナリオの使用に関連していないので、$model->load($data)