首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zf2验证表:如何验证依赖字段?

zf2验证表:如何验证依赖字段?
EN

Stack Overflow用户
提问于 2012-10-03 18:52:02
回答 2查看 7.2K关注 0票数 5

我有5个文本表单

代码语言:javascript
复制
$number1 = new Text('number-1');
$number2 = new Text('number-2');
$number3 = new Text('number-3');
....

使用相对过滤器

代码语言:javascript
复制
foreach(...)
   $input = new Input($elementName);
   $validator = new ValidatorChain();
   $validator->addByName('Int')
       ->addByName('Between', array(
          'min'=>0,
          'max'=>$this->maxAllowedTicket,
          'inclusive'=>true));
   $filter = new FilterChain();
   $filter->attachByName('Int');

   $input->setValidatorChain($validator);
   $input->setFilterChain($filter);

我希望这3种形式中只有一种可以包含不同于0的值。然后有两个可能的错误。

数字太多

代码语言:javascript
复制
 $data['number1'] = 5;
 $data['number2'] = 5;
 $data['number3'] = 0;
 $data['number4'] = 5;
 $data['number5'] = 0;

没有数字

代码语言:javascript
复制
 $data['number1'] = 0;
 $data['number2'] = 0;
 $data['number3'] = 0;
 $data['number4'] = 0;
 $data['number5'] = 0;

如何同时验证此多个字段?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-03 22:09:24

为此,您需要编写自己的Validator类。新验证类的isValid()方法还接收包含整个表单的值的$context。这样,您就可以根据其他字段验证每个字段的值。

代码语言:javascript
复制
namespace My\Validator;
use Zend\Validator\AbstractValidator;

class CustomValidator extends AbstractValidator
{
    public function isValid($value, $context = null)
    {
        // put your logic here and call
        // $this->error(); if required
    }
}
票数 17
EN

Stack Overflow用户

发布于 2012-10-04 17:20:32

使用回调验证器创建您自己的解决方案。

示例如下:http://packages.zendframework.com/docs/latest/manual/en/modules/zend.validator.set.html#callback

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12706957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档