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

标签 database zend-framework doctrine

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

$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/

相关文章:

database - ASP.net MVC 3 将 Controller 生成的默认编辑框更改为日期时间选择器

php - PHP列与第1行的值不匹配

PHP 在 SQL 语句中转换日期时间

php - Zend框架如何保持表单先前的值

symfony - Doctrine 查询上的语法错误 (Symfony2)

mongodb - mongoimport 错误 - 失败 : error connecting to db server: no reachable servers

zend-framework - Zend studio 和 zend 框架中的 b/w application.in、bootstrap.php 和 index.php 有什么区别

xml - Zend 1.10/Doctrine 2,无法使用 XML 映射处理模式

symfony - 如何在 Symfony2 中进行 LIKE 数据库查询

php - Symfony Gedmo Blameable 无法正常工作