php - Yii2:如何动态添加验证规则到模型类?

标签 php reflection model yii2

根据 Yii2 文档,验证规则可以应用于隐式属性(表字段)或用户定义的属性。

有没有办法为动态添加到模型类的属性创建验证规则?

例如:

设一个名为“Filter”的模型类和另一个名为“Category”的模型类 - 笔记本电脑、掌上电脑、台式机等类别。我可能想使用触控板区域作为笔记本电脑类别的过滤器之一,对角线长度为过滤器之一到掌上型等等。因此,在每种情况下,过滤条件都会根据我选择的类别而有所不同,我可能希望将其动态添加到模型类 Filter 中,并验证是否通过帖子加载成功。

最佳答案

您可以编写 rules() 函数来根据场景和数据输入构建验证规则数组。不要求这是一个固定数组。不幸的是,这样做会给您带来前端验证问题(如果您需要的话),那里的动态规则效果不太好。

从评论中我发现最大的问题似乎是属性没有加载到模型中。这主要是因为 load()setAttributes() 都只填充被认为是安全的属性。

有两种方法可以将属性定义为安全:

  • 给它一个验证规则(至少安全)
  • safeAttributes() 返回的属性列表中获取它(通过覆盖它)

关于php - Yii2:如何动态添加验证规则到模型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946129/

相关文章:

javascript - 为什么我不能使用 get_post 方法 php 从 post 表单中获取值

php - 停止从 Yii 中的 Assets 文件夹加载 jquery 库

php - StofDoctrineExtensionsBundle softdelete - 我该如何使用它?

c# - MySql.Data 通过反射

symfony - 在实体类中访问 Symfony2 全局参数

javascript - 在 php mysql 和 jquery 中加载更多

go - 通过反射将接口(interface)的值设置为指向 struc 类型指针的 struct 字段

reflection - Kotlin 中 KProperty1 的通用扩展

c# - 如何将包含 IEnumerable 模型(复杂)的模型从 View C# MVC3 传递到 Controller ?

cakephp - 从 CakePHP 中的模型内分页