トリガーされたメッセージのみを取得したいのですが、登録されたすべてのメッセージを取得しています。
$inputFilter = $factory->createInput(array(
'name' => 'image',
'required' => true,
'validators' => array(
array(
'name' => '\Zend\Validator\File\IsImage',
'options' => ['message' => 'File has to be valid image.']
),
array(
'name' => '\Zend\Validator\File\Extension',
'options' => ['extension' => 'png,jpg,jpeg', 'message' => 'Image extension has to be png,jpg or jpeg.'],
),
array(
'name' => '\Zend\Validator\File\Size',
'options' => ['max' => '2MB', 'message' => 'Maximum file size for image is 2MB.'],
),
),
));
後でコントローラーで:
if(!$filter->isValid()){
var_dump($filter->getMessages());
}
5MB サイズの画像をアップロードしようとすると、すべてのメッセージが表示されます。
array(
'image' => array(
'fileIsImageNotReadable' => 'File has to be valid image'
'fileExtensionNotFound' => 'Image extension has to be png,jpg or jpeg'
'fileSizeNotFound' => 'Maximum file size for image is 2MB'
)
);
ただし、「画像の最大ファイルサイズは2MBです」だけを期待してください。
トリガーされたメッセージのみを返す方法はありますか? それは getMessages() メソッドのデフォルトの動作であるべきですか?