次のように、フォームに 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 要素に対していくつかのデフォルトの検証を作成しようとします。
では、この検証でメッセージをオーバーライドするにはどうすればよいでしょうか?