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

Unable to access attributes values in Dynamic Model validation Yii2

我正在尝试验证用户输入。

$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 参数的值,以便应用我的验证逻辑。目前正在 null

你需要这样的东西:

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

the guide 中解释了内联验证器。

更正下面提到的这些行

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

    }
);

closer 函数在这里定义,但它会调用模型内部的表单 这样,$this->$attribute 变量就可以工作了