根据 Yii2 文档,验证规则可以应用于隐式属性(表字段)或用户定义的属性。
有没有办法为动态添加到模型类的属性创建验证规则?
例如:
设一个名为“Filter”的模型类和另一个名为“Category”的模型类 - 笔记本电脑、掌上电脑、台式机等类别。我可能想使用触控板区域作为笔记本电脑类别的过滤器之一,对角线长度为过滤器之一到掌上型等等。因此,在每种情况下,过滤条件都会根据我选择的类别而有所不同,我可能希望将其动态添加到模型类 Filter 中,并验证是否通过帖子加载成功。
最佳答案
您可以编写 rules()
函数来根据场景和数据输入构建验证规则数组。不要求这是一个固定数组。不幸的是,这样做会给您带来前端验证问题(如果您需要的话),那里的动态规则效果不太好。
从评论中我发现最大的问题似乎是属性没有加载到模型中。这主要是因为 load()
和 setAttributes()
都只填充被认为是安全
的属性。
有两种方法可以将属性定义为安全:
- 给它一个验证规则(至少
安全
) - 在
safeAttributes()
返回的属性列表中获取它(通过覆盖它)
关于php - Yii2:如何动态添加验证规则到模型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946129/