gpt4 book ai didi

database - 使用 Zend 和 doctrine 在数据库中查询现有用户名

转载 作者:搜寻专家 更新时间:2023-10-30 23:19:42 24 4
gpt4 key购买 nike

我正在查询数据库记录以检查用户名是否已存在:

$q = Doctrine_Query::create()
->from('Tcc_Model_User u')
->where('u.Username = ?', $input['Username']);

$object = $q->fetchOne();

if(is_object($object)) {

// not sure what to do here

} else {

// ok to record

我无法让它工作的是如何在提交表单的用户名字段旁边显示用户名已被占用的消息。可以请任何人帮助我吗?非常感谢任何帮助。谢谢

编辑:

感谢 Drew010 我通过添加解决了上述问题:

 $form->getElement('Username')->addError('Sorry, that username is already taken!');

在条件语句的第一个。再次感谢 drew010。

最佳答案

因为您使用的是 Zend_Form,所以有一个验证器可以为您做这件事。

参见 Zend_Validate_DbNoRecordExists

他们给出了一个验证数据库中不存在给定用户名的示例。

这是我的一个应用程序的示例,第三个验证器检查用户名是否不存在:

    $this->addElement('text', 'username', array(
'label' => 'User Name:',
'required' => true,
'validators' => array('NotEmpty'),
'decorators' => $this->elementDecorators,
'validators' => array(
array('StringLength', true, array('min' => 4,
'messages' => array(
Zend_Validate_StringLength::TOO_SHORT =>
'Account username must be at least %min% characters'
)
)),
array('Regex', true, array('pattern' => '/^\w(?:[\w\d\.\-_]+)(?:\w|\d)$/',
'messages' => array(
Zend_Validate_Regex::NOT_MATCH =>
"The username contained invalid characters"
)
)),
array('Db_NoRecordExists', true, array(
'table' => 'accounts', 'field' => 'username',
'messages' => array(
Zend_Validate_Db_NoRecordExists::ERROR_RECORD_FOUND =>
"An account with the username '%value%' is already registered"
)
))
)
));

另外,为了将来的引用,如果你做扩展验证你不能用验证器做,你可以像这样向特定的表单元素添加错误:

if ($something_was_wrong) {
$form->getElement('username')
->addError('Username already exists!');
}

关于database - 使用 Zend 和 doctrine 在数据库中查询现有用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com