Kohana 3.2 ORM 验证和表单验证

Posted

技术标签:

【中文标题】Kohana 3.2 ORM 验证和表单验证【英文标题】:Kohana 3.2 ORM validation and form validations 【发布时间】:2012-06-25 12:02:51 【问题描述】:

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

我们可以将 ORM 验证规则完全移动到模型文件吗?如果我们可以那么怎么做呢?

values 方法是否处理 sql 注入?

【问题讨论】:

【参考方案1】:

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

是的,ORM 是 SQL 注入安全的,因为它使用同样安全的 Query BuilderDB::expr 除外,使用时应格外小心)。

【讨论】:

嘿,感谢您的澄清。我知道我们不应该将模型验证移至控制器,实际上,我对这个问题的意图是,是否有可能使控制器也不受外部验证的影响。但是,你澄清了。可以为sql注入问题加一个词吗?

以上是关于Kohana 3.2 ORM 验证和表单验证的主要内容,如果未能解决你的问题,请参考以下文章

Kohana ORM 和验证,有问题

如何结合 Kohana ORM 验证和 MySQL 功能?

Kohana 3 - 获取 orm 验证错误

Kohana 3.2 验证复合主键

不使用 django 表单如何验证和保存表单数据

avalon的表单验证