1

所以我编写了一个名为 Date 的自定义日期验证器,当我尝试使用它时,zend 回退到 zend_validate_date 调用:

    $datePosted = new Zend_Form_Element_Text('datePosted');
    $datePosted->setLabel('Date Job Was Posted?: ')
            ->setRequired(true)
            ->addFilter('stripTags')
            ->addFilter('stringTrim')
            ->addPrefixPath('Hg2_Validate_Date', 'Hg2/Validate/', 'validate')
            ->addValidators(array(
                array(
                    'validator' => 'NotEmpty',
                    'breackChainOnFailure' => true
                ),
                array(
                    'validator' => 'stringLength',
                    'options' => array(0, 10)
                ),
                array(
                    'validator' => 'Date'
                ),
                array(
                    'validator' => 'alnum',
                    'options' => array('allowWhiteSpaces' => true)
                )
            ));

    return $datePosted;

这就是我所拥有的,它应该使用我的日期而不是 zends 日期吗?

可以通过 addPrefixPath() 看到自定义验证,我将自定义验证器添加到此元素。我的理解是,现在如果我在“验证器”中调用 Date 或 date bellow,它将调用我的 date 而不是 zends?

4

1 回答 1

3

作为前缀,您不必添加_Date到路径中。如果您查看文档

addPrefixPath($prefix, $path, $type = null)
adds a prefix/path association to the loader specified by $type.

Hg2_Validate_Date_Date使用您当前的前缀参数,这可能会扩展到它不会找到的名为的类。

所以这应该适合你

->addPrefixPath('Hg2_Validate', 'Hg2/Validate/', 'validate')
于 2012-11-24T14:36:05.330 回答