Php 无法访问动态模型验证Yii2中的属性值

Php 无法访问动态模型验证Yii2中的属性值,php,yii2,yii2-validation,Php,Yii2,Yii2 Validation,我正在尝试验证用户输入 $params = Yii::$app->getRequest()->getBodyParams(); $model = new DynamicModel($params); $model->addRule(['userId', 'category', 'type'], 'required'); $model->addRule('userId', 'integer'); $model->addRule('category', func

我正在尝试验证用户输入

$params = Yii::$app->getRequest()->getBodyParams();
$model = new DynamicModel($params);
$model->addRule(['userId', 'category', 'type'], 'required');
$model->addRule('userId', 'integer');
$model->addRule('category',
    function ($attribute, $params, $validator) use ($model) {
        var_dump($params); exit;
    });
$model->validate();
return $model;

如何访问
category
参数的值,以便应用验证逻辑。当前它的值为空

您需要这样的值:

$model->addRule(
    'category',
    function ($attribute, $params, $validator) use ($model) {
        if (empty($model->$attribute)) {
            $model->addError($attribute, 'Error message');
        }
    }
);

内联验证器在中有说明。

请更正下面提到的这些行

$model->addRule('category',
    function ($attribute, $params, $validator) { //<---remove use($model)
        var_dump($this->$attribute); exit;  //<--- correct this line
        /*make logic here*/

    }
);
$model->addRule('category',

函数($attribute,$params,$validator){/$attribute);exit;//$attribute变量正在工作

此答案不正确。
$This->$attribute
将针对当前上下文进行计算(例如,如果在控制器操作中执行此操作,
$This
将指向控制器),而不是实际模型。