2016-06-23 2 views
0

주어진 시나리오에서 유효성 검사 데이터에 대한 기능을 만들고 있지만 작동하지 않습니다. 모델 코드 :Yii2 시나리오에서 사용자 지정 유효성 검사가 작동하지 않습니다.

public function rules() 
    { 
     return [ 
    // ['session_key','deal_id','required'], 
     ['data', 'validateCart'], 
     [['session_key','deal_id'], 'safe'], 
     // [['cartfood','session_key'], 'required','on'=>'sessionapi'], 
     ['cartfood', 'myvalidation', 'on' => 'sessionapi'], 
     ]; 
    } 

public function myvalidation($attribute, $params){ 
      if (!$this->hasErrors()) { 
      echo '<pre>'; print_r($params); die; 
      } 
    } 

컨트롤러 : 코드

public function actionPayinapp(){ 
     $data=Yii::$app->getRequest()->getBodyParams();  
     $cart=json_decode($data['cartfood']); 
     $model=new Cart(); 
     $model->scenario = 'sessionapi'; 
     $dataarr = array(); 
     $model->data = $cart; 
if($model->validate()) 
     { 
die(ok); 
} 
} 

나는 sessionapi 시나리오에 myvalidation 실행을 원하지만 제대로 동작하지 않습니다.

+0

시도 : [ 'cartfood', 'myvalidation', => [ 'sessionapi' '에']], –

+0

@YasinPatel이 – Arunendra

+0

$ 모델을 작동하지 않음 = 새 장바구니(); $ model-> scenario = 'sessionapi'; –

답변

2
당신의 컨트롤러 코드로 변경

: - SkipOnEmpty

public function rules() 
{ 
    return [ 
     // ['session_key','deal_id','required'], 
     ['data', 'validateCart'], 
     [['session_key','deal_id'], 'safe'], 
     // [['cartfood','session_key'], 'required','on'=>'sessionapi'], 
     //you have to apply skipOnEmpty in your rules as 
     ['cartfood', 'myvalidation', 'on' => 'sessionapi' ,'skipOnEmpty' => false], 
    ]; 
} 

public function myvalidation($attribute, $params){ 
    if (!$this->hasErrors()) { 
     echo '<pre>'; print_r($params); die; 
    } 
} 
관련 문제