我只是将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形成结果:
使用Symfony2.7形成结果:
如您所见,在两种情况下都会翻译empty_value键。并且选项值键不会出现在调试器中,就好像有。我认为是因为翻译在学说之前加载,但我不知道如何修复它。
感谢。
答案 0 :(得分:1)
我找到了解决方案:
在2.7中引入了choice_translation_domain以避免翻译选项。
->add('category', 'entity', array(
'choice_translation_domain' => true,
));