【发布时间】:2009-11-19 22:21:02
【问题描述】:
我有一个用户可以创建帐户的表单。用户名列在数据库中是唯一的。如果用户尝试使用重复的用户名创建帐户,则会引发异常。这最终看起来很丑陋。
我正在考虑在插入数据库之前进行某种检查(可能使用 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'
))
)
));
【问题讨论】:
-
您的问题中没有足够的信息。你是怎么处理的?当用户点击提交时,您是否只是将用户名字段的值“发布”到您发布整个表单的同一 URI?您必须在控制器中包含添加逻辑或使用单独的操作来仅检查此字段。
-
@Goran,我添加了一个更新,显示我在控制器中所做的事情。
标签: jquery ajax zend-framework zend-form