Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于用户输入ZF 1设置验证器_Php_Validation_Zend Framework - Fatal编程技术网

Php 基于用户输入ZF 1设置验证器

Php 基于用户输入ZF 1设置验证器,php,validation,zend-framework,Php,Validation,Zend Framework,在基于用户输入执行验证链的过程中,是否可以添加新的验证器 例如: 假设我们有一个带有radio select的表单,它指定范围为1..10的输入数量 <label><input type="radio" name="number" id="number-1" value="1">1</label> [...] <label><input type="radio" name="number" id="number-10" value="10"&

在基于用户输入执行验证链的过程中,是否可以添加新的验证器

例如: 假设我们有一个带有radio select的表单,它指定范围为1..10的输入数量

<label><input type="radio" name="number" id="number-1" value="1">1</label>
[...]
<label><input type="radio" name="number" id="number-10" value="10">10</label>
1
[...]
10
在这个字段之后,有10个文本输入,没有“notEmpty”验证器,在用户单击其中一个收音机之前,这些文本输入将被jquery隐藏,因此如果用户选择1而不是5或10,表单将进行验证

我的问题是,在验证radio字段的过程中,例如在该字段的自定义验证器中,我是否可以基于所选的radio值将验证器设置为指定的文本输入

我以前的想法是创建自定义验证器并将其应用于每个文本输入。

字段设置为具有与单选按钮一样的一致命名方案。然后尝试以下方法:

$(":radio").on("click", function() {

    var textInputName = $(this).id + "text";

    //Perform validation

});

这里的想法是,您的文本输入将被命名为
等,这样您就可以通过将上面的代码与单击的单选按钮的id相关联来轻松调用正确的输入。

是的,您可以,但您需要定义哪个单选选项具有哪个验证器

也许在你的行动中或者直接在你的Zend_形式中

您可以覆盖表单中的isValid()方法,如下所示

或者,首先检查收音机的值,然后将addValidator()添加到表单元素

示例

$form = new Application_Form_Test();

$radio = $this->_getParam('radio','default_value');

if($radio=='default_value') {
    $form->myfieldid->addValidator('NotEmpty');
}

if($form->isValid($this->getRequest()->getPost())) {
    //valid form!
}

您也可以在Zend_Form类中这样做,只需覆盖isValid($params)函数并首先检查radio的值,然后在其他字段中添加或删除验证器。别忘了用parent::isValid($params)获取默认错误!干杯这就是我要做的:)