2016-03-30 27 views
2

jQuery tarafından görünüm sayfasındaki senaryoyu değiştirmek istiyorum. Formumda bir onay kutusu var, işaretli kutuda giriş kutusunun girilmesini istiyorum.Senaryoyu formda değiştirme Yii2

Kuralımın:

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

benim bakış sayfası:

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

sonra herhangi doğrulama yapmadan önce bir görünümleri üzerine geçen bir modeli

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

ve örneğini zaman Ya ilişkili değildir, çünkü cevabı silmek için jquery .validatio ama yii2 senaryo kullanımına ... Doğrulama istemcisi tarafında muhtemelen bir ajax doğrulama o senaryo olmadan yerel bir jquery doğrulama daha iyidir ... – scaisEdge

cevap

4

deneyin böyle Kuralınızı kurmak için:

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' 
     ], 
    ]; 
} 

yaklaşık conditional validation ve whenClient validator property okuyun. Senaryoyu daha bilgilendirici olarak adlandırmayı da düşünebilirsiniz, ör. amacı ile, 'on' => 'sign-up' veya 'on' => 'login'. Senaryo, belirli durumlarda geçerli olmak için belirli kurallara gereksinim duyduğunuzda yararlıdır, ancak bu senaryoyu açıkça belirtmeniz gerekir. Eğer, ya $model->load($data)