方案不工作时的Yii2自定义验证

方案不工作时的Yii2自定义验证,yii2,Yii2,我正在为给定场景的验证数据创建一个函数,但它不起作用。 型号代码: public function rules() { return [ // ['session_key','deal_id','required'], ['data', 'validateCart'], [['session_key','deal_id'], 'safe'], // [['cartfood','session_key'], 're

我正在为给定场景的验证数据创建一个函数,但它不起作用。 型号代码:

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

我希望
myvalidation
sessionapi
场景中运行,但它不起作用。

将控制器代码更改为:-

公共功能规则()
{
返回[
//['session_key'、'deal_id'、'required'],
['data','validateCart'],
[['session\u key'、'deal\u id']、'safe'],
//[['cartfood'、'session_key']、'required'、'on'=>'sessionapi'],
//您必须在规则中应用skipOnEmpty作为
['cartfood'、'myvalidation'、'on'=>sessionapi'、'skipOnEmpty'=>false],
];
}
公共函数myvalidation($attribute,$params){
如果(!$this->hasErrors()){
echo'';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);
}
}
} }
将控制器代码更改为:-

公共功能规则()
{
返回[
//['session_key'、'deal_id'、'required'],
['data','validateCart'],
[['session\u key'、'deal\u id']、'safe'],
//[['cartfood'、'session_key']、'required'、'on'=>'sessionapi'],
//您必须在规则中应用skipOnEmpty作为
['cartfood'、'myvalidation'、'on'=>sessionapi'、'skipOnEmpty'=>false],
];
}
公共函数myvalidation($attribute,$params){
如果(!$this->hasErrors()){
echo'';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);
}
}
} }
Try:['cartfood','myvalidation','on'=>['sessionapi']],@YasinPatel不工作$model=new Cart()$模型->场景='sessionapi';把这行代码放在所有代码之上action@YasinPatel感谢您的支持,祝您好运。请尝试:['cartfood'、'myvalidation'、'on'=>['sessionapi']]、@YasinPatel不工作$model=new Cart()$模型->场景='sessionapi';把这行代码放在所有代码之上action@YasinPatel不走运,谢谢你的支持。