1

トリガーされたメッセージのみを取得したいのですが、登録されたすべてのメッセージを取得しています。

$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() メソッドのデフォルトの動作であるべきですか?

4

1 に答える 1