我编写了自己的Zend框架自定义验证器。但是文档似乎没有告诉我1)在哪里保存它,以及2)如何将它包含在我的Zend_Form中。 Zend中没有这样的约定吗?任何人都可以建议:
这是我的自定义验证器类。我不确定这是否是正确的约定,但我把它放在我的库/ QA文件夹中,因为我可以使用composer autoload自动加载所有内容:
<?php
class QA_Validators_TagRange extends Zend_Validate_Abstract
{
...
}
接下来,我有一个文件格式/ questionsForm.php,其中包含以下类:
<?php
class QuestionForm extends Zend_Form
{
public function init()
{
$this->addElement('text', 'tags', array(
'label' => 'Tags',
'required' => true,
'filters' => array(
'StringTrim',
),
'validators' => array(
'NotEmpty'
)
));
...
}
}
我的新自定义验证器如何适合这个?感谢
答案 0 :(得分:1)
我认为,你可以通过两种方式实现,
$yourValidator = new QA_Validators_TagRange();
$yourField->addValidator($yourValidator, true);
这应该在library\QA\Validator\TagRange.php
OR
$yourField->addPrefixPath('QA_Validators', 'QA/Validators/', 'validate');
$yourField->addValidator('TagRange', true);
这应该在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(….)
))
)
));
但是对于这种添加验证器的方式,我认为你需要设置
$form->addElementPrefixPaths($elementPrefixPaths);。我认为addValidator()
方式更容易