【问题标题】:Adding custom validation in zend framework在 zend 框架中添加自定义验证
【发布时间】:2012-07-15 02:34:05
【问题描述】:

我有一个名为 users 的 mysql 表,其中包含以下字段:用户名、密码、电子邮件 我有类似“用户/更新”的控制器/操作,用于添加新用户和“用户/更新/id/{user_id}” 我对两个控制器都有相同的 Zend_Form。为了添加新用户,我使用以下代码检查了用户名是否已经存在:

$username->addValidator('Db_NoRecordExists', true, array('table' => 'user', 'field' => 'username'));

这在添加新用户时效果很好,但在编辑用户时,即使用户离开用户名字段,我也会收到用户名已存在错误。 它们是 zend 为编辑字段提供类似于 Db_NoRecordExists 的验证。 在编辑案例中,我想要这样的查询:

SELECT COUNT(*) FROM users WHERE username='$username' AND id!=$update_id

我该怎么做?

【问题讨论】:

    标签: zend-framework zend-form zend-form-element


    【解决方案1】:

    您可以将您的 sql 查询转换为 Zend_Db_Select

    $select = Zend_Db_Table::getDefaultAdapter()->select()->from('users')->where('username =?',$username)
                                                                        ->where('id != ?',$update_id);
    
    
    $validator =  new Zend_Validate_Db_NoRecordExists($select);
    

    【讨论】:

      【解决方案2】:

      Zend_Validate_Db_NoRecordExists 在这种情况下有一个排除选项:

      $validator = new Zend_Validate_Db_NoRecordExists(
          array(
              'table' => 'users',
              'field' => 'username',
              'exclude' => array(
                  'field' => 'id',
                  'value' => $user_id
              )
          )
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-06
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多