繁体   English   中英

在原则配置中配置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类:

/**
 * @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')

然后,您只需要运行一个命令,它将在一个不错的Web 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

够了! 无需生成/指定翻译标签。 另外,它可以在具有相似字段的表单之间重复使用! 这在我们奏鸣曲管理员的工作范围之内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM