我需要一个项目翻译实体和一个简单的方法来维护内容。一个“myentity”可以有许多“myentity_trans”。
到目前为止这很容易,但我需要一个简单的动态表单,而不会在symfony2默认行为中改变太多。
当我创建/编辑“myentity”时,我需要为每种语言使用“myentity_trans”子表单。是否有一种通用的方法来处理这一切?
我的实体例如:
myentity
- id
- status
myentity_trans
- id
- myentity_id
- language_id
- ...
language
- id
- name
编辑1: 这里我的表单配置适用于编辑,如果我有相关的实体:
$builder
->add('name')
->add('trans', 'collection', array(
'type' => new RetailerTransType(),
'allow_add' => true,
'allow_delete' => true
));
现在我喜欢每种可能语言的空表单,因此用户可以轻松创建翻译。我尝试使用查询构建器,但它显然不适用于集合类型。
答案 0 :(得分:0)
您应该使用Gemo\DoctrineExtensions\Translatable,可以使用Stof\DoctrineExtensionsBundle轻松与symfony2集成
...或者我的提示,如果使用PHP 5.4+和可用的特征KnpLabs\DoctrineBehaviors\Translatable。
为了将这些与表单很好地集成,请使用a2lix\TranslationFormBundle。 此捆绑包提供您正在寻找的内容 - 您的语言的翻译集合。
有关使用DoctrineBehaviors \ Translatable和当前语言环境代理的快速见解,请参阅my answer here,我发现这是一个非常舒适的解决方案。
只需创建课程Entity
和EntityTranslation
,包含代理行... call $entity->getProperty()
- >当前区域设置自动应用。尽可能简单: - )