Php Zend框架1>;好的,我';我已经编写了一个自定义验证器。我应该把它放在哪里?我的Zend_表格是如何包含它的?

Php Zend框架1>;好的,我';我已经编写了一个自定义验证器。我应该把它放在哪里?我的Zend_表格是如何包含它的?,php,validation,zend-framework,Php,Validation,Zend Framework,我已经编写了自己的Zend framework自定义验证器。但是文档似乎没有告诉我1)在哪里保存它,2)如何在Zend_表单中包含它。Zend没有这样的惯例吗?有谁能建议: 这是我的自定义验证器类。我不确定这是否是正确的约定,但我已将其放在我的library/QA文件夹中,因为我可以使用composer autoload自动加载那里的所有内容: <?php class QA_Validators_TagRange extends Zend_Validate_Abstract {

我已经编写了自己的Zend framework自定义验证器。但是文档似乎没有告诉我1)在哪里保存它,2)如何在Zend_表单中包含它。Zend没有这样的惯例吗?有谁能建议:

这是我的自定义验证器类。我不确定这是否是正确的约定,但我已将其放在我的library/QA文件夹中,因为我可以使用composer autoload自动加载那里的所有内容:

<?php

class QA_Validators_TagRange extends Zend_Validate_Abstract
{
    ...
}

我想,你可以用两种方法

$yourValidator = new QA_Validators_TagRange();  
$yourField->addValidator($yourValidator, true); 
这应该在
library\QA\Validator\TagRange.php下查看

这应该在
library\QA\Validator\TagRange.php下查看

更新 您还可以按照您在问题中添加的样式添加验证器,如下所示:

$this->addElement('text', 'tags', array(
    'label'      => 'Tags',
    'required'   => true,
    'filters' => array(
        'StringTrim',
    ),
    'validators' => array(
        array('TagRange', true, array(
            'messages' => array(….)  
     ))
    )
));
但是对于这种添加验证器的风格,我认为您需要设置


。我认为
addValidator()
方法更简单

谢谢。我相信我现在可以让它工作了。但是,是否可以使用我在上面使用过的样式的自定义验证器,其中过滤器、验证器等作为选项传递给
$this->addElement(…)
。如果没有,我将根据您建议的方法更新所有表格,以保持一致。这是一个更好的方法吗?(
$myfield=new…;$myfield->addValidator(…);$myfield->addFilter(…);$form->addElement($myfield)
等)我可以看到文档以这种方式给出了示例,但是我发现$this->addElement(array(…)封装了所有内容。只是一个想法。@user3265472是的,您也可以在addElement中添加验证器,但我个人觉得使用addValidator()方法要容易得多,因为它可以很容易地使用。。
$yourField->addPrefixPath('QA_Validators', 'QA/Validators/', 'validate');        
$yourField->addValidator('TagRange', true); 
$this->addElement('text', 'tags', array(
    'label'      => 'Tags',
    'required'   => true,
    'filters' => array(
        'StringTrim',
    ),
    'validators' => array(
        array('TagRange', true, array(
            'messages' => array(….)  
     ))
    )
));