2
根据Yii2文档,可以将验证规则应用于隐式属性(表字段)或用户定义的属性。Yii2:如何动态地将验证规则添加到模型类中?
有没有办法为动态添加到模型类的属性创建验证规则?
例如:
要有一个名为“过滤器”模型类,并命名为“类别”另一个模型类 - 类别,如笔记本电脑,掌上电脑,台式机等。我可能需要使用触控板区域作为一个过滤器以笔记本类别和对角线长度作为过滤器到掌上类别之一等等。因此,在任何情况下,过滤条件都会根据我选择的类别而有所不同,我可能希望将其添加到模型类Filter并动态验证,如果通过发布加载成功。
没有人说'rules()'函数应该被编码为一个固定数组,根据许多条件来组装它是完全可能的。如果你还想要前端验证,它只会咬你,这是困难的。 – Blizz
问题是如果我没有为动态添加的属性声明我的规则(),模型类字段没有被填充。例如$ model-> load(yii - > $ app0-> request-> post())不会加载$ model变量,因为load()调用setAttributes(),然后调用validate()方法,这会失败,因为没有为动态添加的属性声明规则。 –
啊但这不一定是相关的规则。 'load'&'setAttributes'默认只接受'safe'属性。你也可以简单地重写['safeAttributes()'](http://www.yiiframework.com/doc-2.0/yii-base-model.html#safeAttributes()-detail),而与验证无关。 – Blizz