Проверка Symfony при загрузке нескольких файлов

У меня есть форма, содержащая поле FileType. Я установил multiple возможность true Таким образом, пользователь может загружать несколько файлов одновременно.

$builder->add('myFile', FileType::class, [
'label' => 'upload file',
'multiple' => true,
])

Вот соответствующее свойство в сущности, связанной с этой формой:

     /**
* @Assert\NotBlank()
* @Assert\File(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
* @ORM\Column(type="array")
*/
private $myFile;

Когда я отправляю форму, я получаю сообщение об ошибке:

UnexpectedTypeException in FileValidator.php line 168:
Expected argument of type "string", "array" given

Я добавил фигурные скобки перед File assert, чтобы это выглядело так:

* @Assert\File{}(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})

Теперь он не жалуется при отправке формы. но проверка типа файла также не проверяется.

Любая идея, как заставить тип файла работать для нескольких выбранных файлов?

0

Решение

Так как вы проверяете массив Fileнужно подать заявку All валидатор, который будет применять внутренние валидаторы к каждому элементу массива.

Попробуйте что-то вроде:

/**
* @Assert\All({
*     @Assert\NotBlank()
*     @Assert\File(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
* })
* @ORM\Column(type="array")
*/
private $myFile;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]