2015-02-20 3 views
3

Я пытаюсь настроить администратора как ребенка другого администратора в Sonata Admin Bundle.Пароль администратора не создан - Соната Admin Bundle

У меня 2 администратора класса:

  • CategoryAdmin
    Этот класс содержит следующий метод

    protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null) 
    {    
        $id = $this->getRequest()->get('id'); 
    
        $menu->addChild(
         $this->trans('Projects'), 
         array('uri' => $this->getChild('sonata.admin.project')->generateUrl('list', array('id' => $id))) 
        ); 
    } 
    
  • ProjectAdmin
    Этот класс содержит protected $parentAssociationMapping = 'category';
    category - это свойство в классе модели, представляющем ассоциацию ManyToOne.

Я добавил следующие строки в моей конфигурации службы для CategoryAdmin

calls: 
    - [ addChild, ["@sonata.admin.project"]] 

Маршруты для ребенка администратора не генерируется с этой конфигурацией. Ссылка в точках SideMenu (верхнее меню) для /admin/project/list?childId=1&id=1

Вот выход из детей CategoryAdmin с dump()

array:1 [▼ 
    "sonata.admin.project" => ProjectAdmin {#406 ▶} 
] 

Это означает, что конфигурация для моего ребенка администратора кажется правильным. Я понятия не имею, почему маршруты для дочернего администратора не создаются.

Надеюсь, кто-нибудь может дать мне подсказку, в чем проблема.

ответ

0

У вас есть $ baseRouteName и $ baseRoutePattern в вашем классе администратора?

Если вы это сделаете, Sonata сгенерирует как дочерние, так и родительские маршруты с тем же именем, в результате чего родительские маршруты будут переопределять дочерние.

+0

Нет ли способ вокруг этого? Я должен определить '$ baseRouteName' и' $ baseRoutePattern', потому что в противном случае Sonata отказывается от моего пакета без поставщиков (например, src/AppBundle /). –

+0

Если использование dev-master версии SonataAdminBundle не является проблемой, ошибка была решена в нем (https://github.com/sonata-project/SonataAdminBundle/pull/3250). Если вы не можете переопределить getBaseRoutePattern и getBaseRouteName, чтобы исправить это поведение. – jvasseur

0

Примечание для следующего поколения сонаты кодеров: Если ваш маршрут не генерируется, сначала проверьте вы не делали:

protected function configureRoutes(RouteCollection $collection) 
{ 
    //clear all routes except given !!! 
    $collection->clearExcept(array('list', 'show')); 
} 

Это стоит мне два дня ...