我有一个属性键验证的问题。
在模型中,我有这样的属性:
public $_fileds = [];
和My view
<?= $form->field($model, '_fileds[name]') ?>
<?= $form->field($model, '_fileds[type]') ?>
我想设置"_fields[name]"作为必填字段。例如,我尝试在模型中添加这样的规则:
public function rules()
{
return [
[['_fields[name]'], 'required']
];
}
但这不起作用:(
谁有解决办法?
很抱歉我的英语不好,提前感谢所有的解决方案。
您可以编写自己的验证。
删除:public $_fileds = [];
public function rules()
{
return [
[['_fields[name]'], 'validateName']
];
}
在同一模型类中:
public function validateName():bool
{
... your checks(if fails return false) ...
return true;
}
但是有一个问题:如果一些检查失败了,在正常情况下,需要使用$this->addError()设置错误消息,这将正确地处理非数组元素的属性,因为作为$this->addError()
的第一个元素,您需要将属性名称传递为字符串,其中' _fields '是可以的,但' _fields [name]'将不起作用。因此,您还需要找到一种在出现错误时返回错误的方法。属性标签和提示也是同样的问题。