2012-06-25 78 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