Yii:在其中一条规则返回 FALSE 后,如何中止模型验证?
在 Yii
框架中,在规则之一返回 FALSE
后,如何中止
任何进一步验证
?
我想要实现的是:
1)在我们知道模型未通过验证后停止不必要的 MySQL 查询。
2) 为网络用户提供更清晰、易于理解的错误消息,无需在控制器中手动对它们进行排序。
预先感谢您的帮助!
In Yii
framework, how do you abort
any further validation
after one of rules returns FALSE
?
What I am trying to achieve is:
1) stopping unnecessary MySQL queries after we know that a model didn't pass the validation.
2) cleaner, easy to understand error messages for the web user, without sorting them manually in the controller.
Thank you in advance for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
简而言之:没有全局设置或解决方案:如果您查看 CActiveRecord::validate(),您可以看到所有验证器都被调用并执行。
您可以防止对同一属性运行多个验证。您必须为所有验证规则设置skipOnError=true。
http://www.yiiframework.com/doc/api/1.1/ CValidator/#skipOnError-detail
我认为可以在 Yii 中添加一个全局选项(实际上很容易)。
In short: there is no global setting or solution: If you look at CActiveRecord::validate(), you can see all validators are called and executed.
You can prevent running multiple validations for the same attribute. You would have to set skipOnError=true for all the validation rules.
http://www.yiiframework.com/doc/api/1.1/CValidator/#skipOnError-detail
I think a global option could be added to Yii (quite easily actually).
谢谢你!
对于浏览此线程的用户:
validate()
方法(将在自定义 AR 类中扩展)位于yii/framework/base/CModel
第 150 行。Thank you!
For users browsing this thread:
The
validate()
method - to be extended in your custom AR class - is located inyii/framework/base/CModel
, line 150.