我的表单中有一个 Select 元素,如下所示:
$this->add(array(
'name' => 'cat_id',
'type' => 'Zend\Form\Element\Select',
'options' => array(
'label' => 'Categoria',
'empty_option' => '',
'value_options' => array(
'' => '',
),
),
));
在我的value_options
控制器中充满了数据库信息......(有更好的方法吗?)
我为他准备了一个 InputFilter,如下所示:
$this->add(array(
'name' => 'cat_id',
'required' => true,
'validators' => array(
array(
'name' => 'NotEmpty',
'break_chain_on_failure' => true,
'options' => array(
'messages' => array('isEmpty' => 'O campo "Categoria" é obrigatório'),
),
),
),
));
请注意,我想更改isEmpty
消息……这就是问题所在!
当我提交表格时,我仍然收到相同的英文信息:
cat_id:
isEmpty : Value is required and can't be empty
所以我的问题是:为什么我还有这个消息?它是从哪里来的?我怎样才能改变它?
Ps.:使用 Text 元素,效果很好。只有使用 Select 元素我才会遇到这个问题。
额外的问题:
如果我想使用 InArray Validator,如下所示:
array(
'name' => 'InArray',
'options' => array(
'haystack' => array( ... ),
'messages' => array(
'notInArray' => 'Valor não encontrado no banco de dados'
),
),
),
我需要总是填补这个haystack
领域?没有办法告诉验证器使用表单value_options
?
天呐!
编辑
我不确定,因为没有人证实这一点,但我猜 ZF2 在您设置表单元素时会对表单元素进行默认验证type
。
举个例子,
$this->add(array(
'name' => 'cat_id',
'type' => 'Zend\Form\Element\Select',
'options' => array(
'empty_option' => '',
'value_options' => array(
// ...
),
),
'attributes' => array(
// ...
),
));
在这种情况下,ZF2 会为 Select 元素创建一些默认验证,例如检查是否为空并检查大海捞针。
那么如何覆盖此验证中的消息?