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

Is it possible to add a translatable association in Sonata Admin Bundle?

是否可以使用 DoctrineBehaviors Translatable 功能在 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'
        ]
    ]
])

其中 'slideshow' 是可翻译字段,与其他实体关联:

// 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: Argument 1 passed to Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer::__construct() must implement interface Sonata\AdminBundle\Model\ModelManagerInterface, null given, called in D:\XAMPP\htdocs\mega\app\cache\dev\classes.php on line 13492 and defined in D:\XAMPP\htdocs\mega\app\cache\dev\classes.php line 12628

我希望我的问题很清楚。

谢谢!

好吧,我找到了解决问题的简单方法。例如,我想为每种不同语言的 InfoPage 设置一个不同的图库。所以,我可以通过这种方式实现:

# 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.