我有一個用戶可以創建一個帳戶的表單。用戶名列在數據庫中是唯一的。如果用戶嘗試使用重複的用戶名創建帳戶,則會引發異常。這看起來很醜陋。Zend表單:如何創建一個用於檢查唯一用戶名的「創建賬戶表單」?
我正在考慮在插入數據庫之前進行某種檢查(可能使用ajax)以查看是否已經使用了所需的用戶名。如果事實證明用戶名已被佔用,我想將表單上的用戶名字段設置爲錯誤狀態並指定要顯示的錯誤消息。
我怎樣才能做到這一點?
更新:Zend_Validator_Db_NoRecordExists
適用於這類事情。這裏是我最後得到的:
// inside my create account form
$this->addElement('text', 'username', array(
'label' => 'Username:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array('StringLength', false, array(2, 50)),
array('Db_NoRecordExists', false, array(
'table' => 'users',
'field' => 'username'
))
)
));
沒有在你的問題的足夠信息。你在做什麼處理?當用戶點擊提交時,您是否將用戶名字段的值「post-ing」到發佈整個表單的相同URI?您必須在控制器中包含附加邏輯,或者使用單獨的操作僅檢查此字段。 – 2009-11-21 09:32:05
@Goran,我添加了一個更新,顯示我在我的控制器中正在做什麼。 – Andrew 2009-11-21 23:58:29