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