Zend Framework 1 > 好的,我已经编写了一个自定义验证器。我把它放在哪里?我的 Zend_Form 如何包含它?
Zend Framework 1 > OK, I've written a custom validator. Where do I put it? How does my Zend_Form include it?
我已经编写了自己的 Zend 框架自定义验证程序。但是文档似乎没有告诉我 1) 将它保存在哪里,以及 2) 如何将它包含在我的 Zend_Form 中。 Zend中没有这样的约定吗?任何人都可以建议:
这是我的自定义验证器 class。我不确定这是否是正确的约定,但我已将它放在我的 library/QA 文件夹中,因为我可以使用 composer autoload:
自动加载那里的所有内容
<?php
class QA_Validators_TagRange extends Zend_Validate_Abstract
{
...
}
接下来,我有一个文件 form/questionsForm.php,其中包含以下 class:
<?php
class QuestionForm extends Zend_Form
{
public function init()
{
$this->addElement('text', 'tags', array(
'label' => 'Tags',
'required' => true,
'filters' => array(
'StringTrim',
),
'validators' => array(
'NotEmpty'
)
));
...
}
}
我的新自定义验证器如何适应它?谢谢
我认为,您可以通过两种方式做到这一点,
$yourValidator = new QA_Validators_TagRange();
$yourField->addValidator($yourValidator, true);
这应该在 library\QA\Validator\TagRange.php
下查看
或
$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()
方法更简单
我已经编写了自己的 Zend 框架自定义验证程序。但是文档似乎没有告诉我 1) 将它保存在哪里,以及 2) 如何将它包含在我的 Zend_Form 中。 Zend中没有这样的约定吗?任何人都可以建议:
这是我的自定义验证器 class。我不确定这是否是正确的约定,但我已将它放在我的 library/QA 文件夹中,因为我可以使用 composer autoload:
自动加载那里的所有内容<?php
class QA_Validators_TagRange extends Zend_Validate_Abstract
{
...
}
接下来,我有一个文件 form/questionsForm.php,其中包含以下 class:
<?php
class QuestionForm extends Zend_Form
{
public function init()
{
$this->addElement('text', 'tags', array(
'label' => 'Tags',
'required' => true,
'filters' => array(
'StringTrim',
),
'validators' => array(
'NotEmpty'
)
));
...
}
}
我的新自定义验证器如何适应它?谢谢
我认为,您可以通过两种方式做到这一点,
$yourValidator = new QA_Validators_TagRange();
$yourField->addValidator($yourValidator, true);
这应该在 library\QA\Validator\TagRange.php
或
$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()
方法更简单