在zend框架中添加自定义验证

时间:2012-07-15 02:34:05

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

我有一个名为users的mysql表,其中包含字段:用户名,密码,电子邮件 我有控制器/操作这样的'用户/更新'用于添加新用户和'user / update / 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

我该怎么做?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

对于这种情况,

Zend_Validate_Db_NoRecordExists有一个排除选项:

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