是否可以在Sonata Admin Bundle中添加可翻译关联?

时间:2015-07-20 08:54:56

标签: php symfony sonata-admin symfony-sonata sonata

是否可以使用DoctrineBehaviors可翻译功能在Sonata Admin中添加可翻译关联?

我的意思是,类似的东西:

// InfoPageAdmin.php

->add('translations', 'a2lix_translations', [
    'fields' => [
        'title' => [
            'field_type' => 'text'
        ],
        'content' => [
            'field_type' => 'ckeditor',
            'config_name' => 'default'
        ],
        'slideshow' => [
            'field_type' => 'sonata_type_model_list'
        ]
    ]
])

幻灯片放映'是可翻译的字段,与其他实体相关联:

// InfoPageTranslation.php

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\PictureCollection", cascade={"persist"}, fetch="EAGER")
 * @ORM\JoinColumn(name="slideshow_id", referencedColumnName="id")
 */
protected $slideshow;

我收到以下错误:

  

ContextErrorException:Catchable Fatal Error:传递给的参数1   索纳塔\ AdminBundle \表格\ DataTransformer \ ModelToIdTransformer :: __结构()   必须实现接口   Sonata \ AdminBundle \ Model \ ModelManagerInterface,null给定,调用   第13492行的D:\ XAMPP \ htdocs \ mega \ app \ cache \ dev \ classes.php   在D:\ XAMPP \ htdocs \ mega \ app \ cache \ dev \ classes.php第12628行中定义

我希望我的问题很明确。

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,我找到了解决问题的简单方法。例如,我想为InfoPage的每种不同语言使用不同的Gallery。所以,我可以这样做:

# InfoPageAdmin.php
->add('translations', 'a2lix_translations', [
    'fields' => [
        'gallery' => [
            'field_type' => 'entity',
            'class' => 'AppBundle:Gallery',
        ],
    ],
])

这里,Gallery是InfoPage实体的字段:

# AppBundle/Entity/InfoPage.php
/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Gallery", cascade={"persist"}, fetch="EAGER")
 * @ORM\JoinColumn(name="gallery_id", referencedColumnName="id")
 */
protected $gallery;

我希望我的回答可以帮助别人。 :)

编辑:如果你想使用' sonata_type_model_list'在翻译中,工作解决方法在此处描述:https://github.com/a2lix/TranslationFormBundle/issues/155