我读过一篇文章理解“安全”验证规则
提交人说:
关键点-大量的分配将只对已通过一些明确的验证规则的字段进行。显而易见的“实际”验证器--长度、电子邮件、要求等等--都符合条件,但有些字段是免费的和可选的,没有任何格式要求--用户可以随意放置,包括将其保留为空白。
但是有一个评论
我承认我没有花时间彻底地证实这一点,但据我所知,你把验证与作业合并起来是不正确的。如果内存服务正常,那么当您执行大量赋值时($model->setAttributes($_POST'Model')),就不会发生实际的验证。相反,对于POST/GET数组中的每个属性,模型检查该属性对于分配是否安全(通过检查该属性是否存在验证或安全规则,而不实际验证该属性)--如果存在,则设置该属性,如果没有,则忽略该属性。 只有在调用$model->save() (或显式地调用$model-> place ())时,才会进行验证,而此时已经分配的属性将使用验证规则进行检查。 还值得一提的是,大量分配和单个分配实际上并不等价--大量分配检查每个属性是否有验证或安全规则,而如果您进行单个分配($model->attribute =$POST‘model’),则不进行此类检查-- Yii假设属性是可信的。
所以,任何人都可以证明哪一件是正确的?
发布于 2012-02-11 20:54:17
只有当字段的类型不是“不安全”的验证规则时,才能大规模地分配字段。然而,它并没有在大规模的任务分配中得到验证。
当您调用validate()或调用save(true)时,它将被验证。
不要忘记,您可以直接在它们的类引用中阅读Yii源代码
发布于 2012-02-11 17:48:05
大量分配发生在两种情况下- 1.当您为一个字段设置验证规则时。在这种情况下,该字段将通过验证。2.当你宣布该领域安全时。在这种情况下,您可能有或可能没有字段的验证规则。这项任务将不顾一切地完成。
因此正确的答案是-“取决于”是否为该字段定义了验证规则。
https://stackoverflow.com/questions/9241511
复制相似问题