Вам нужно создать экземпляр ограничений. Клавиша mimeTypes
соответствует ограничению File
, а pattern
- Regex
.
Однако, поскольку terms
является UploadedFile
, его метод __toString()
вернет временное загруженное имя файла, и проверка не будет выполнена. Вместо этого вам нужно будет использовать Callback
, чтобы получить доступ к объекту.
->add('terms', FileType::class, [
'constraints' => [
new Callback(function ($object, ExecutionContextInterface $context, $payload) {
$pattern = '/^([a-z]+-)+-20\d{6}\.pdf$/';
if (!preg_match($pattern, $object->getClientOriginalName())) {
$context->buildViolation('Change the name of the file')
->addViolation();
}
}),
new File([
'mimeTypes' => [
"application/pdf",
"application/x-pdf",
],
]),
])