我有一个用户可以创建帐户的表单。用户名列在数据库中是唯一的。如果用户尝试创建具有重复用户名的帐户,则会引发异常。这最终看起来很难看。
我正在考虑在插入数据库之前进行某种检查(可能使用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'
))
)
));
答案 0 :(得分:5)
在表单元素中添加Db_NoRecordExists
验证程序。
http://framework.zend.com/manual/en/zend.validate.set.html#zend.validate.Db
答案 1 :(得分:0)
您应该自己在服务器端进行此检查。你不应该让数据库处理这个。然后,您可以产生一个很好的错误。无论客户端/ ajax检查如何,都应该这样做。
要执行Ajax检查,请创建一个返回0或1的控制器。绕过视图和布局代码的简单方法是退出();在控制器的末尾。进行Ajax调用时,为结果分配处理程序。此处理程序读取结果并确定是否显示消息。