我試圖驗證我的用戶模型數據,我遇到了這個問題。如何僅使用特定驗證集來驗證CakePHP中的數據?
說我有以下驗證規則,存儲在$驗證變量:
var $validate=array(
"username" => array(
"usernameCheckForRegister" => array(
"rule" => ...,
"message" => ...
),
"usernameCheckForLogin" => array(
"rule" => ...,
"message" => ...
)
),
//rules for other fields
);
在UsersController控制器,I有兩個動作:寄存器()和登錄()。 問題是,如何使用usernameCheckForRegister規則驗證register()操作中的username字段,以及如何使用其他規則usernameCheckForLogin驗證login()操作中的username字段? CakePHP中是否有任何行爲或方法允許我在驗證時選擇應用於表單字段的哪組規則?
非常感謝您的幫助!
我的問題將是爲什麼你想在登錄時驗證用戶名?登錄時,唯一需要回答的問題是「數據庫中是否存在使用此密碼的用戶名?」用戶名是否有效並不重要。如果不是,則登錄將失敗,因爲用戶名不存在。 – deceze 2010-08-30 03:44:55
我想在登錄時驗證用戶名的原因是因爲我還使用了客戶端驗證,它會告訴用戶他是否已將用戶名字段留空。 – linkyndy 2010-08-30 08:15:11
對不起,仍然沒有得到它。 :)通用的「無效登錄信息」消息應該足夠了,甚至可能會更好。 Cake模型驗證設置是爲了確保只有經過驗證的數據被保存到數據庫中。登錄時,您不會將任何內容保存到數據庫,因此您不應該使用驗證規則。如果您只是想警告用戶有關空白輸入的信息,請不要使用模型驗證規則。 – deceze 2010-08-30 08:26:39