Symfony2 - Установить перевод домена для всей формы
Я хочу перевести форму, созданную с помощью symfony formbuilder. Поскольку я не хочу, чтобы один большой файл перевода был разделен на "домены".
Теперь я должен указать translation_domain
для каждого поля формы, иначе symfony будет искать не тот файл. Этот параметр должен быть добавлен в каждое поле, и мне интересно, есть ли способ установить этот вариант для всей формы?
Пример кода я не доволен:
$builder->add(
'author_name',
'text',
array('label' => 'Comment.author_name', 'translation_domain' => 'comment')
)->add(
'email',
'email',
array('label' => 'Comment.email', 'translation_domain' => 'comment')
)->add(
'content',
'textarea',
array('label' => 'Comment.content', 'translation_domain' => 'comment')
);
Ответы
Ответ 1
Затем вы установите его как вариант по умолчанию для своей формы, добавьте это:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'translation_domain' => 'comment'
));
}
к вашему методу setDefaultOptions
в вашей форме.
Ответ 2
Имя метода в Ahmed теперь устарело (поскольку Symfony 2.7), способ 2.7 + сделать это:
/**
* Configures the options for this type.
*
* @param OptionsResolver $resolver The resolver for the options.
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('translation_domain', 'messages');
}
так же, как вы установили настройки data_class
и т.д.
Чтобы сделать это, используя только конструктор форм, в конструкторе форм есть аргумент options
. Из контроллера, например:
$form = $this->createFormBuilder($entity, ['translation_domain' => 'messages'])->add(..)->getForm();
Если вы используете службу FormFactory
, это будет
$formFactory->createBuilder('form', $entity, ['translation_domain' => 'messages']);
Ответ 3
Или, если вы используете Factory namedBuilder, который будет:
$formBuilder = $this->get('form.factory')->createNamedBuilder('myForm', 'form', $data, array(
'translation_domain' => 'forms',
));
Ответ 4
Symfony 3
/**
* Configures the options for this type.
*
* @param OptionsResolver $resolver The resolver for the options.
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'translation_domain' => 'forms',
// Add more defaults if needed
));
}