0

我需要一个项目翻译实体和维护内容的简单方法。一个“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
    ));

现在,我喜欢每种可能的语言都使用空表单,因此用户可以轻松创建翻译。我尝试使用查询生成器,但它显然不适用于集合类型。

4

1 回答 1

0

您应该使用Gemo\DoctrineExtensions\Translatable ,它可以使用Stof\DoctrineExtensionsBundle轻松与 symfony2 集成

...或者我的提示,如果使用带有可用特征的 PHP 5.4+ KnpLabs\DoctrineBehaviors\Translatable

为了将这些与您的表单很好地集成,请使用a2lix\TranslationFormBundle。此捆绑包提供您正在寻找的内容 - 您的语言的翻译集合。

请参阅我的答案,以快速了解如何使用 DoctrineBehaviors\Translatable 和当前的语言环境代理,我发现这是一个非常舒适的解决方案。

只需创建类EntityEntityTranslation包含代理行...调用$entity->getProperty()

-> 自动应用当前语言环境。尽可能简单:-)

于 2013-07-11T13:18:33.353 回答