如何在symfony2表单中处理1:n关系?

时间:2013-07-11 08:55:11

标签: php forms symfony doctrine-orm

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

有关使用DoctrineBehaviors \ Translatable和当前语言环境代理的快速见解,请参阅my answer here,我发现这是一个非常舒适的解决方案。

只需创建课程EntityEntityTranslation,包含代理行... call $entity->getProperty()

- >当前区域设置自动应用。尽可能简单: - )