Создайте многоуровневого ребенка в администраторе symfony sonata

#php #symfony #symfony4 #sonata-admin #symfony-4.4

Вопрос:

Я хотел бы спросить, как создать многоуровневого ребенка в sonata admin ? У меня есть класс раздела, который имеет отношение к дочернему разделу того же класса. Как у меня может быть случай, когда раздел может иметь дочерний раздел, где у дочернего раздела может быть другой дочерний раздел и т. Д…

Это мой класс сущностей:

 class Section
{

    /**
     * @ORMManyToOne(targetEntity=Section::class, inversedBy="childrenSection")
     */
    private $parentSection;

    /**
     * @ORMOneToMany(targetEntity=Section::class, mappedBy="parentSection")
     */
    private $childrenSection;
}
 

Услуги.yaml

 admin.section:
    class: AppAdminSectionAdmin
    arguments: [~, AppEntitySection, ~]
    tags:
        - { name: sonata.admin, manager_type: orm, label: Section }
    calls:
        - [addChild, ['@admin.section', 'parentSection']]
    public: true
 

Классы Администратора:

SectionAdmin.php

 final class SectionAdmin extends AbstractAdmin
{
    protected function configureRoutes(RouteCollection $collection)
    {
        $collection
            ->add('parentSection', $this->getRouterIdParameter() . '/section/list');
    }

    protected function configureListFields(ListMapper $listMapper): void
    {
        $listMapper
            ->add('id')
            ->add('name')
            ->add('_action', null, [
                'actions' => [
                    'edit' => [],
                    'delete' => [],
                    'parentSection' => ['template' => 'BUTTON LIST SECTION FILE'],
                ],
            ]);
    }

}
 

Я столкнулся со следующей ошибкой:

Обнаружена циклическая ссылка для службы «admin.section», путь: «admin.section -> admin.section».

Есть ли какой-либо способ создать ребенка, не ограничивая глубину ребенка в администраторе sonata ?