使用可翻译的学说和 Symfony 2 形式

Posted

技术标签:

【中文标题】使用可翻译的学说和 Symfony 2 形式【英文标题】:Using doctrine translatable together with Symfony 2 forms 【发布时间】:2011-10-03 22:41:56 【问题描述】:

我的应用中有 Entity,它有 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; 

 /........

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

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

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

【问题讨论】:

它不知道它是否符合您的需求,但这个捆绑包对我来说非常有用github.com/a2lix/TranslationFormBundle 你可以使用 TranslationExtraBundle:github.com/ideea/TranslationExtraBundle 和开源项目,使用这个包时:github.com/ZhukV/Nadiyka 请从 FormType 发布您的代码。 【参考方案1】:

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

您可以使用带有属性的 FormBuilder 放置翻译内容的字段:

array('mapped'=>false)

这样获取数据:

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

然后像这样坚持下去

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

我希望它对某人有所帮助。

【讨论】:

以上是关于使用可翻译的学说和 Symfony 2 形式的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 学说数据加载分段错误

如何在 Symfony2,学说 2 中使用 @SqlResultSetMapping?

使用 symfony2 缓存 ReadOnly 学说 2 实体的结果

Symfony/学说

Symfony2,学说和数据域

Symfony 2 实体连接或学说查询连接