以zend形式对组合字段进行重复验证

时间:2012-10-20 14:31:29

标签: zend-framework zend-form zend-validate

您好我有一张表,其中三个字段的组合为unique。我想对这个组合进行重复检查。表看起来像

enter image description here

我知道如何验证单个字段,但是如何验证组合是不知道的。要验证一个字段,我使用以下函数

public function isValid($data) {

    // Options for name field validation
    $options = array(
        'adapter' => Zend_Db_Table::getDefaultAdapter(),
        'table' => 'currencies',
        'field' => 'name',
         'message'=> ('this currency name already exists in our DB'),
    );



    // Exclude if a id is given (edit action)
    if (isset($data['id'])) {
        $options['exclude'] = array('field' => 'id', 'value' => $data['id']);
    }



    // Validate that name  is not already in use
    $this->getElement('name')
            ->addValidator('Db_NoRecordExists', false, $options

    );



    return parent::isValid($data);
}

是否有人会指导我如何验证组合字段的重复?

2 个答案:

答案 0 :(得分:1)

据我所知,目前还没有准备好使用验证器。您可以自己编写,也可以使用三个条件(每个字段一个)对SQL查询进行检查。

答案 1 :(得分:0)

您必须对zend表单的name元素应用验证。 以下是在名称字段上添加验证的代码。

$name->addValidator(
    'Db_NoRecordExists', 
    true, 
    array(
        'table' => 'currencies',
        'field' => 'name',
        'messages' => array( "recordFound" => "This Currency Name already exists in our DB") ,

    )
);

你必须设置所需的真实。