Ale*_* B. 21 localization symfony
我想翻译一个用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')
);
Run Code Online (Sandbox Code Playgroud)
Ahm*_*ani 53
然后,您可以将其设置为表单的默认选项,添加以下内容:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'translation_domain' => 'comment'
));
}
Run Code Online (Sandbox Code Playgroud)
以您的setDefaultOptions方式,以您的形式.
小智 26
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');
}
Run Code Online (Sandbox Code Playgroud)
以同样的方式设置您的data_class设置等.
要仅使用表单构建器执行此操作,表单构建器上有一个options参数.从控制器,例如:
$form = $this->createFormBuilder($entity, ['translation_domain' => 'messages'])->add(..)->getForm();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用该FormFactory服务,那就是
$formFactory->createBuilder('form', $entity, ['translation_domain' => 'messages']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18398 次 |
| 最近记录: |