У меня есть форма, содержащая поле 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"})
Теперь он не жалуется при отправке формы. но проверка типа файла также не проверяется.
Любая идея, как заставить тип файла работать для нескольких выбранных файлов?
Так как вы проверяете массив File
нужно подать заявку All
валидатор, который будет применять внутренние валидаторы к каждому элементу массива.
Попробуйте что-то вроде:
/**
* @Assert\All({
* @Assert\NotBlank()
* @Assert\File(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
* })
* @ORM\Column(type="array")
*/
private $myFile;
Других решений пока нет …