zend 2 表单验证器组
zend 2 forms validatator groups
我正在使用 getInputFilterSpecification() 来验证我的表单元素,即
public function getInputFilterSpecification()
{
return array(
'comment' => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
),
),
),
),
'name' => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
),
),
),
),
}
我的问题是:与其对表单中的每个单独元素重复相同的验证器,不如将所有元素集中到一个数组中并让验证器遍历它们。
即像这样的东西:
$validateThisGroup = $inputFilter->setValidationGroup(array('comment', 'name'));
return array(
$validateThisGroup => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
),
),
),
),
更新;
我改写了我的问题。我基本上是想找出输入过滤器规范函数是否有验证器组函数。
不确定我的建议是否值得作为一个完整的答案,但无论如何 :)
需要为每个输入单独创建验证器,它们是由 InputFilter 的插件管理器创建的独立有状态实例,因此您需要为每个输入传递单独的验证器定义。
如果您只想避免复制粘贴,请在 returning 之前定义验证器定义并将其插入 return 数组。
$inputValidatorsSpec = [
[
'name' => 'StringLength',
'options' => [
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
],
],
];
$inputFiltersSpec = [
['name' => 'StripTags'],
['name' => 'StringTrim'],
];
return [
'comment' => [
'required' => true,
'filters' => $inputFiltersSpec,
'validators' => $inputValidatorsSpec
],
'name' => [
'required' => true,
'filters' => $inputFiltersSpec,
'validators' => $inputValidatorsSpec
]
];
我正在使用 getInputFilterSpecification() 来验证我的表单元素,即
public function getInputFilterSpecification()
{
return array(
'comment' => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
),
),
),
),
'name' => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
),
),
),
),
}
我的问题是:与其对表单中的每个单独元素重复相同的验证器,不如将所有元素集中到一个数组中并让验证器遍历它们。
即像这样的东西:
$validateThisGroup = $inputFilter->setValidationGroup(array('comment', 'name'));
return array(
$validateThisGroup => array(
'required' => true,
'filters' =>array(
array('name'=>'StripTags'),
array('name'=>'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
),
),
),
),
更新;
我改写了我的问题。我基本上是想找出输入过滤器规范函数是否有验证器组函数。
不确定我的建议是否值得作为一个完整的答案,但无论如何 :)
需要为每个输入单独创建验证器,它们是由 InputFilter 的插件管理器创建的独立有状态实例,因此您需要为每个输入传递单独的验证器定义。
如果您只想避免复制粘贴,请在 returning 之前定义验证器定义并将其插入 return 数组。
$inputValidatorsSpec = [
[
'name' => 'StringLength',
'options' => [
'encoding' => 'UTF-8',
'min' => 1,
'max' => 500,
],
],
];
$inputFiltersSpec = [
['name' => 'StripTags'],
['name' => 'StringTrim'],
];
return [
'comment' => [
'required' => true,
'filters' => $inputFiltersSpec,
'validators' => $inputValidatorsSpec
],
'name' => [
'required' => true,
'filters' => $inputFiltersSpec,
'validators' => $inputValidatorsSpec
]
];