2015-02-04 14 views
8

tôi có các quy tắc và các kịch bảnYii2 quy tắc xác nhận cụ thể cho một kịch bản

public function rules(){ 
     return [ 
      [['name','email','password'],'required'], 
      ['email','myvalidation'], 
      ['email','email'], 
      [['name', 'email', 'password'], 'required', 'on' => 'register'], 
      ]; 
    } 




public function scenarios() 
    { 
     $scenarios = parent::scenarios(); 
     $scenarios['login'] = ['name','password','email'];//Scenario Values Only Accepted 
     return $scenarios; 
    } 

Tôi muốn sau khi rule'myvalidation' chỉ áp dụng cho các kịch bản login và không phải ở tất cả trong cases.How khác này có thể đạt được trong Yii2 ?

Trả lời

12

Chỉ cần chỉ định on sở hữu trong quy tắc xác nhận điều này:

['email', 'myvalidation', 'on' => 'login'], 
9

Hãy nhớ rằng bạn cũng có thể sử dụng "ngoại trừ". Ví dụ:

public function rules() 
     { 
      return [ 
       [['first_name', 'email', 'phone', 'password'], 'required', 'except' => 'changepassword'], 
       [['password'], 'required', 'on' => 'changepassword'] 
]} 
+0

đây là những gì tôi đang tìm kiếm ,,, cảm ơn bạn rất nhiều .. –

+0

changepassword là gì? – 981

+0

Đây là một kịch bản. Quy tắc đó chỉ áp dụng nếu bạn đặt kịch bản đó :) – Eduardo

Các vấn đề liên quan