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

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

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

我的意思是,类似这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 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\\'是可翻译字段,与其他实体相关联:

1
2
3
4
5
6
7
// 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 的每种不同语言创建一个不同的图库。所以,我可以通过这种方式实现:

1
2
3
4
5
6
7
8
9
# InfoPageAdmin.php
->add('translations', 'a2lix_translations', [
    'fields' => [
        'gallery' => [
            'field_type' => 'entity',
            'class' => 'AppBundle:Gallery',
        ],
    ],
])

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

1
2
3
4
5
6
# 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。