2012-06-25 77 views
0

自从去年一年以来,我一直在Kohan 3.0.7上进行维护项目。当我查看最新版本(3.2)时,我遇到了ORM验证,这是我在使用Kohana 3.0.7时没有注意到的。在我的项目中,我使用了表单验证并验证模型中的所有表单。在阅读时,http://kohanaframework.org/3.2/guide/orm/examples/validation,我发现在控制器本身中添加了额外字段“确认密码”的验证规则。所以,我想知道 -Kohana 3.2 ORM验证和表单验证

我们可以将ORM验证规则完全移到模型文件中吗?如果我们可以那么它是如何做到的?

是否方法照顾sql注入?

回答

1

您不能也不应该将模型验证移动到控制器。
在您提供的示例中,他们使用了所谓的“额外验证”。
看看保存method API - 它采用可选的Validation参数,后面在check方法中用于验证其他逻辑(如密码匹配等)。
原因是您的模型中没有一个名为“password_matching”的字段(那么您可以在rules函数中编写此规则;)),因此您需要对这种情况使用外部验证。
另一个使用外部验证的例子是上传文件,并根据上传结果在您的ORM模型上执行操作。

是的,ORM是SQL注入安全的,因为它使用的是Query Builder,它也是安全的(DB::expr除外,应特别小心使用)。

+0

嘿,谢谢你的澄清。我知道我们不应该将模型验证移到控制器上,实际上,我的意图是,如果有可能让控制器免于外部验证。但是,你澄清了它。你可以添加一个单词的SQL注入问题? – KutePHP

+0

更新了我的答案;) – matino