Php 基于用户输入ZF 1设置验证器
在基于用户输入执行验证链的过程中,是否可以添加新的验证器 例如: 假设我们有一个带有radio select的表单,它指定范围为1..10的输入数量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"&
<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)获取默认错误!干杯这就是我要做的:)