我讀過一篇文章"Understanding "Safe" Validation Rules"在Yii執行「大規模任務」時執行驗證嗎?
撰文稱,:
要點 - 大規模的分配將只針對具有 通過一些明確的驗證規則領域取得。明顯的「實際」驗證器 - 長度,電子郵件,所需等等 - 全部符合要求,但有些字段是自由格式和可選的,並且沒有任何格式要求 - 用戶可以放任何他喜歡的內容,包括離開它空白。
但有一個comment:
我承認我還沒有采取徹底證實了這一點的時候,但 據我記得,你是不是在 結塊驗證正確與任務。如果內存正確運行,當您執行大規模 賦值($ model-> setAttributes($ _ POST ['Model']))時,不會進行實際的 驗證。相反,在POST每個屬性/ GET 陣列,所述模型檢查是否該屬性是用於分配 安全(通過檢查是否存在用於該 屬性的驗證或安全規則,而無需實際驗證它) - 如果存在則它設置 的屬性,如果不是,則忽略它。
只有使用驗證規則檢查已分配已經分配了 的屬性時,纔會調用$ model-> save()(或 顯式$ model-> validate())進行驗證。
還值得一提的是,大規模的分配和個人 分配不在實際上相當於 - 大規模分配檢查 是否有每個屬性驗證或安全規則,而 如果你讓一個單獨分配($模型 - >屬性= $ _POST ['Model'] ['attribute'];)不做這樣的檢查 - Yii假定 屬性是可信的。
所以,任何可以證明這是正確的事情?
+1直接讀取Yii的源代碼,好,你提到的閱讀源代碼過於 – 2012-02-12 06:14:14
是的,我讀過Yii的源代碼,並看到有在大規模的調整中沒有任何驗證。感謝您提及+1 :) – 2012-02-19 08:36:12