Arunendra
Arunendra

Reputation: 570

Yii2 Custom validation on scenario not working

I am creating a function for validation data on given scenario but its not working. Model code :

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;
          }
     }

Controller : code

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);
}
}

I want myvalidation run on sessionapi scenario but it's not working.

Upvotes: 0

Views: 1092

Answers (1)

Double H
Double H

Reputation: 4160

Change Your Controller Code As: -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;
    }
}

Upvotes: 2

Related Questions