在 doctrine 配置中配置 symfony 表单标签
Configure symfony form label in doctrine config
我目前在一个项目中,我有很多实体和很多领域(有地址、电话、年龄、公司号码的客户......),我正在为一个法国客户做这件事。所以我用英文编码:
class Client
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstName;
}
我有这样的配置:
AppBundle\Entity\Client:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
firstName:
type: string
length: 255
options:
label: Prénom
所以 options.label 似乎不起作用,我想知道在哪里可以进行这些翻译,因为它会涉及很多领域,而且因为我使用的是 Sonata admin,所以我不想必须将它们放在 ClientAdmin
class:
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('firstName')
->add('lastName')
->add('birthDate', 'birthday')
;
}
/**
* @param ShowMapper $showMapper
*/
protected function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('id')
->add('firstName')
->add('lastName')
->add('birthDate')
;
}
因为我必须至少翻译两次(表单、显示...)所以我希望它能在所有应用程序中处理一次翻译。
有什么想法吗?我查看了 Gedmo 可翻译扩展,但它不符合我正在寻找的内容:我只是想翻译表格的标签,整个应用程序将使用一种独特的语言:法语。
Symfony 2.6
学说 2.2 到 2.5
你应该看看这个。它将帮助您自动化翻译过程。 http://jmsyst.com/bundles/JMSTranslationBundle
你只需要使用键而不是真正的标签(尽管在你的情况下它是可选的),就像这样:
$formMapper
->add('firstName',null, array('label'=>'sonata.user.firstName')
然后你只需 运行 一个命令,它会在一个漂亮的网络 GUI 中提取所有密钥,你可以从那里将它们翻译成你想要的任何语言。
试试这个:
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Client',
'label' => 'Prénom'
));
}
不知道的人,原来自动标签已经是翻译键了,你只需要在你的表单中指定translation_domain,所以我现在有一个messages.fr.yml
:
First Name: Prénom
这就够了!无需生成/指定翻译标签。此外,它可以在具有相似字段的表单之间重复使用!这在我们奏鸣曲管理员的关注范围内有效。
我目前在一个项目中,我有很多实体和很多领域(有地址、电话、年龄、公司号码的客户......),我正在为一个法国客户做这件事。所以我用英文编码:
class Client
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstName;
}
我有这样的配置:
AppBundle\Entity\Client:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
firstName:
type: string
length: 255
options:
label: Prénom
所以 options.label 似乎不起作用,我想知道在哪里可以进行这些翻译,因为它会涉及很多领域,而且因为我使用的是 Sonata admin,所以我不想必须将它们放在 ClientAdmin
class:
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('firstName')
->add('lastName')
->add('birthDate', 'birthday')
;
}
/**
* @param ShowMapper $showMapper
*/
protected function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('id')
->add('firstName')
->add('lastName')
->add('birthDate')
;
}
因为我必须至少翻译两次(表单、显示...)所以我希望它能在所有应用程序中处理一次翻译。
有什么想法吗?我查看了 Gedmo 可翻译扩展,但它不符合我正在寻找的内容:我只是想翻译表格的标签,整个应用程序将使用一种独特的语言:法语。
Symfony 2.6 学说 2.2 到 2.5
你应该看看这个。它将帮助您自动化翻译过程。 http://jmsyst.com/bundles/JMSTranslationBundle 你只需要使用键而不是真正的标签(尽管在你的情况下它是可选的),就像这样:
$formMapper
->add('firstName',null, array('label'=>'sonata.user.firstName')
然后你只需 运行 一个命令,它会在一个漂亮的网络 GUI 中提取所有密钥,你可以从那里将它们翻译成你想要的任何语言。
试试这个:
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Client',
'label' => 'Prénom'
));
}
不知道的人,原来自动标签已经是翻译键了,你只需要在你的表单中指定translation_domain,所以我现在有一个messages.fr.yml
:
First Name: Prénom
这就够了!无需生成/指定翻译标签。此外,它可以在具有相似字段的表单之间重复使用!这在我们奏鸣曲管理员的关注范围内有效。