实体的翻译不起作用[Symfony2]

时间:2015-06-23 11:57:57

标签: php forms symfony translation

我只是将Symfony2从2.4升级到2.7。除了大量弃用的电话,我发现了一个奇怪的问题。

我有一个"选择"在表单中标记,我从数据库中获取选项。在数据库中存储了翻译键,并且始终工作正常,symfony在表单中显示正确的语言。但不是现在。

一些代码和屏幕截图:

形式:

SELECT incident_id, usr_id, item_id,
       Attachment = CASE WHEN EXISTS
                    (
                       SELECT 1 FROM act_reg a
                       WHERE i.incident_id  =   a.incident_id
                        AND  i.usr_id       =   a.usr_id
                        AND  a.act_type_sc  =  'ADD_ATTCHMNTS'
                    ) THEN 'Yes' ELSE 'No' END
FROM incident i

模板:

->add('category', 'entity', array(
    'empty_value' => 'Event.form.label.category_empty',
    'class' => 'EventBundle:Category',
    'choice_label' => 'name',
    'error_bubbling' => true,
    'constraints' => array(
        new NotBlank(array('message' => 'Event.form.error.category.notblank'))
    )
))
->add('subcategory', 'entity', array(
    'class' => 'EventBundle:Subcategory',
    'choice_label' => 'name',
    'error_bubbling' => true,
    'constraints' => array(
        new NotBlank(array('message' => 'Event.form.error.subcategory.notblank'))
    )
))

使用Symfony2.4形成结果:

Form result with Symfony2.4

使用Symfony2.7形成结果:

Form result with Symfony2.7

如您所见,在两种情况下都会翻译empty_value键。并且选项值键不会出现在调试器中,就好像有。我认为是因为翻译在学说之前加载,但我不知道如何修复它。

感谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:

在2.7中引入了choice_translation_domain以避免翻译选项。

http://symfony.com/blog/new-in-symfony-2-7-form-and-validator-updates#added-choice-translation-domain-domain-to-avoid-translating-options了解更多详情

->add('category', 'entity', array(
    'choice_translation_domain' => true,
));