1
我對模型字段的默認值有疑問,這個問題一直讓我發瘋。模型驗證規則的默認值
給你舉個例子,我有一個狀態字段的模型必須進行驗證:
$validate = array (
...
'status' => array(
'list' => array(
'rule' => array('inList', array('0','1')),
'allowEmpty' => true
)
)
)
插在數據庫中沒有從表單提交的數據。
如果狀態字段丟失,我希望它默認爲1,否則它必須被驗證。
有沒有辦法從模型做到這一點,而不使用自定義驗證規則?我知道我可以在MySQL表中設置默認值,但我仍然想從模型中驗證它,以防提交不同的值。
編輯
我看着Validation類代碼和INLIST驗證只是一個in_array檢查一個愚蠢的包裝:
Cake.Utility.Validation.php
public static function inList($check, $list, $strict = true) {
return in_array($check, $list, $strict);
}
你知道什麼,在CakePHP Api docs
($ strict)中也沒有提到第三個參數,默認爲true。
從in_array文檔:
如果嚴格的第三個參數設置爲TRUE則in_array()函數 還將檢查該類型的針在草堆。
它仍然不能解決我的問題,但現在我知道爲什麼array('inList',array('0','1'))沒有驗證空字段,即使allowEmpty設置爲true。
謝謝。
即使我已經添加'allowEmpty'=> true,但它可以工作,但它不通過驗證規則。我也嘗試過:array('inList',array('','0','1')),但目前還沒有運氣。 –
beforeValidate()如何? –
嗯......沒有使用beforeValidate()與添加自定義驗證規則相同?但是,我同意沒有任何添加默認值的預定義方式,所以我會繼續您的建議並在beforeSave()中添加一個值。我也會像這樣修改inList規則:array('inList',array('0','1'),false),否則它不會驗證空字段。 –