我有一个输入过滤器...
$this->inputFilter->add($factory->createInput([
'name' => 'reason',
'required' => true,
'filters' => [
[
'name' => 'StripTags'
]
],
'validators' => [
[
'name' => 'StringLength',
'options' => [
'min' => 10,
'max' => 150
]
]
]
]));
当长度为 0 时,"必需"错误开始(似乎使用 NotEmpty 验证器)。这给出了一个非常通用的消息"值是必需的,不能为空"。
由于我在表单上方的列表而不是在其输入旁边显示所有错误,因此这还不够具体。
我假设有一个像验证器数组一样的"消息"键,但我找不到任何关于它的文档。
如何为空输入设置消息?
我深入研究了 InputFactory 代码并发现了一些东西......
continue_if_empty将允许一个空字段,但仍运行验证器。
$this->inputFilter->add($factory->createInput([
'name' => 'reason',
'continue_if_empty' => true,
'filters' => [
[
'name' => 'StripTags'
]
],
'validators' => [
[
'name' => 'StringLength',
'options' => [
'min' => 10,
'max' => 150,
'messages' => [
'Zend'Validator'StringLength::TOO_SHORT => 'The reason must be greater than %min% characters.',
'Zend'Validator'StringLength::TOO_LONG => 'The reason must be less than %max% characters.'
]
]
]
]
]));
您还可以添加error_message配置。似乎无论发生什么,它都会始终显示此错误,而不会显示其他错误。这很好,因为唯一的验证器是StringLength。
$this->inputFilter->add($factory->createInput([
'name' => 'reason',
'error_message' => 'The reason must be between 10 and 150 characters in length.',
'filters' => [
[
'name' => 'StripTags'
]
],
'validators' => [
[
'name' => 'StringLength',
'options' => [
'min' => 10,
'max' => 150,
]
]
]
]));
如果您仍然需要"非空"消息,您应该能够添加 NotEmpty 验证器,自定义其消息,并使用 continue_if_empty => true 配置。