Формы автоматически используют перевод в Symfony 4?

Я работаю над обновлением приложения с Symfony 3 до Symfony 4.

Я заметил некоторые ошибки в профилировщике в новой версии на одном из моих маршрутов, который имеет форму. Ошибки были в Перевод -> Сообщения перевода -> Отсутствующие:

Эти сообщения недоступны для данной локали и не могут быть найдены в резервных локалях. Добавьте их в каталог переводов, чтобы Symfony не выводил непереведенное содержимое.

Каждое поле формы было указано в отсутствующих сообщениях.

Я ничего не делал с переводом в старой версии, поэтому мне было интересно, почему новая версия ожидала переводов. Это что-то, что теперь автоматически связано с формами? Если да, то есть ли способ отключить это? Это действительно не нужно для этого приложения.


person Don't Panic    schedule 06.02.2018    source источник
comment
Какую версию Symfony 3 вы использовали?   -  person Fabien Papet    schedule 07.02.2018
comment
@FabienPapet 3.2.9   -  person Don't Panic    schedule 07.02.2018


Ответы (2)


Когда вы включаете переводы в пакете фреймворка, Forms попытается использовать их через TranslationExtension, который автоматически регистрируется. Если вам не нужны никакие переводы, вы можете отключить их. Имейте в виду, что ошибки проверки в форме возвращаются как их ключи перевода, а не сообщение.

В Symfony 3 параметр должен быть в app/config/config.yml, а в структуре каталогов Symfony 4 они должны быть в config/packages/framework.yaml или config/packages/translation.yaml в разделе:

framework:
    translator: ~ # just set this to false if you don't want any translations to be used

Другой вариант — запретить регистрацию TranslationExtension или написать собственное расширение формы который устанавливает для translation_domain в абстрактном FormType значение false< /а>.

Другой вариант — просто игнорировать уведомления об отсутствующих переводах. Поскольку переводы кэшируются и всегда будут возвращаться к ключу (в вашем случае фактической метке), это не окажет никакого влияния на производительность или других негативных эффектов.

edit: Что касается вашего последнего вопроса, я не думаю, что это поведение сильно изменилось с Symfony 3 до 4, и вы должны были видеть подобное поведение раньше. Я предполагаю, что вы просто не заметили предупреждение раньше, но оно было там. Хотя это всего лишь предположение.

person dbrumann    schedule 07.02.2018
comment
Вы правы, это не изменилось между версиями. Раньше я никогда не видел предупреждений, потому что переводчик был закомментирован в моем config.yml, как только я его включил, конечно, я получил предупреждения и в старой версии. Спасибо за объяснение, это было весьма полезно. - person Don't Panic; 07.02.2018

Вы должны disable перевести в Form следующим образом:

$builder
    ......
    ......
    ->add('budget', MoneyType::class, array(
          'label_attr' => array('class' => 'control-label'),
          'attr' => array('class' => 'span11'),
          ...
          'translation_domain' => false
    ))
    ......
    ......
    ;
person Imanali Mamadiev    schedule 07.02.2018