Можно ли добавить переводимую ассоциацию в Sonata Admin Bundle?

Можно ли добавить переводимую ассоциацию в Sonata Admin, используя функцию DoctrineBehaviors Translatable?

Я имею в виду что-то вроде этого:

// 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, переданный в Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer::__construct(), должен реализовывать интерфейс Sonata\AdminBundle\Model\ModelManagerInterface, значение null задано, вызывается в D:\XAMPP\htdocs\mega\app \cache\dev\classes.php в строке 13492 и определено в D:\XAMPP\htdocs\mega\app\cache\dev\classes.php в строке 12628

Я надеюсь, что мой вопрос понятен.

Спасибо!


person Tadas Ališauskas    schedule 20.07.2015    source источник


Ответы (1)


Что ж, я нашел простой способ решить проблему. Например, я хотел бы иметь разные галереи для каждого языка 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.

person Tadas Ališauskas    schedule 06.08.2015