Я пытаюсь переопределить атрибут maxSizeMessage из файла в проекте Symfony 4.2, однако это сообщение по умолчанию, возвращаемое платформой ("Файл слишком большой ( {{size}} {{суффикс}}). Допустимый максимальный размер: {{limit}} {{суффикс}} ").
Это моя конфигурация валидатора для этого FormType:
# config\validator\validator.yaml
App\Application\Form\Command\PropertyPicture\PropertyAddPictureCommand:
properties:
image:
- Image:
maxSize: 10M
maxSizeMessage: "Image size over 10M"
mimeTypes: [image/jpeg, image/png, image/gif, image/bmp]
mimeTypesMessage: "Image extension not valid"
uploadErrorMessage: "An error has been encounted during the process"
[ПРАВКА для комментария Михаила Томчука (2019/04/08)]
Это объект "FormType" в этом проекте (это архитектура DDD с POMM):
class PropertyAddPictureCommand
{
/**
* @var string
*/
public $link;
/**
* @var string
*/
public $filename;
/**
* @var Property
*/
public $property;
/**
* @var string
*/
public $pathname;
/**
* @var string
*/
public $directory;
/**
* @var UploadedFile
*/
public $image;
}
[КОНЕЦ РЕДАКТИРОВАНИЯ для комментария Михаила Томчука (2019/04/08)]
[РЕДАКТИРОВАТЬ для комментария Михаила Томчука (2019/04/09)]
Это использование объекта FormType (перед объектом получают значения, переданные в массиве $ options) в проекте:
class CommandType extends AbstractType
{
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'name' => 'command_type',
]);
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options): void
{
foreach (get_object_vars($options['data']) as $key => $value) {
$builder->add($key);
}
}
}
И вот как я вызываю объект формы в контроллере:
$uploadedFile = $request->files->get('image');
$propertyId = $property->getIdValue();
$directory = 'group'.DIRECTORY_SEPARATOR.$this->getUser()->getGroupId().DIRECTORY_SEPARATOR.'property'.DIRECTORY_SEPARATOR.$propertyId;
$filename = $propertyId.'-'.uniqid().'.'.$uploadedFile->getClientOriginalExtension();
$command = new PropertyAddPictureCommand();
$command->link = $this->getParameter('amazon_s3.bucket_url').'images/'.$directory.DIRECTORY_SEPARATOR.$filename;
$command->filename = $filename;
$command->property = $property;
$command->pathname = $uploadedFile->getPathname();
$command->directory = $directory;
$form = $this->createForm(CommandType::class, $command, ['data_class' => PropertyAddPictureCommand::class]);
$form->submit($request->request->all() + ['image' => $uploadedFile], false);
if (!$form->isValid()) {
throw new NotValidFormException($form);
}
[END EDIT для комментария Михаила Томчука (2019/04/09)]
Я ожидал, что появится сообщение «Размер изображения превышает 10M», если размер изображения превышает 10M.