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
将指向控制器),而不是实际模型。