使用可与Symfony 2形式一起翻译的学说

时间:2011-10-03 22:41:57

标签: doctrine-orm symfony

我的应用程序中有实体,它有2个可翻译的字段,使用Doctrine Translatable Extension:

class Page implements Translatable
{
    /......

    /**
     * @var string $name
     * @Gedmo\Translatable
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @var text $content
     * @Gedmo\Translatable  
     * @ORM\Column(name="content", type="text")
     */
    private $content; 

 /........
}

我使用一个表进行多个实体翻译。 现在我想使用一个表单来获取这些属性的原始和翻译(到1种语言)值,因此它应该有4个字段。

我已经定义了从AbstractType派生的新表单,并尝试使用FormBuilder添加这两个字段,但它表示它们对应的实体不包含这些字段。我已经尝试将这些字段添加到实体中,并为它们声明getter,但我知道获取实体的翻译的唯一方法是使用专用实体管理器和AFAIK,提供实体管理器访问实体是不好的做法。

有没有办法使用表单来处理这样的事情?

1 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但无论如何。

您可以使用带有属性的FormBuilder为已翻译的内容添加字段:

array('mapped'=>false)

获取如下数据:

$form->get('field_name')->getData();

然后像这样坚持

https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#multi-translations

我希望它有所帮助。