我有5个文本表单
$number1 = new Text('number-1');
$number2 = new Text('number-2');
$number3 = new Text('number-3');
....使用相对过滤器
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的值。然后有两个可能的错误。
数字太多
$data['number1'] = 5;
$data['number2'] = 5;
$data['number3'] = 0;
$data['number4'] = 5;
$data['number5'] = 0;没有数字
$data['number1'] = 0;
$data['number2'] = 0;
$data['number3'] = 0;
$data['number4'] = 0;
$data['number5'] = 0;如何同时验证此多个字段?
发布于 2012-10-03 22:09:24
为此,您需要编写自己的Validator类。新验证类的isValid()方法还接收包含整个表单的值的$context。这样,您就可以根据其他字段验证每个字段的值。
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
}
}发布于 2012-10-04 17:20:32
使用回调验证器创建您自己的解决方案。
示例如下:http://packages.zendframework.com/docs/latest/manual/en/modules/zend.validator.set.html#callback
https://stackoverflow.com/questions/12706957
复制相似问题