未生成子管理路由 - Sonata Admin Bundle

tem*_*rus 5 symfony symfony-sonata sonata-admin sonata

我正在尝试将一个管理员设置为 Sonata 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)))
         );
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • ProjectAdmin
    此类包含protected $parentAssociationMapping = 'category';
    category表示多对一关联的模型类中的属性。

我在 CategoryAdmin 的服务配置中添加了以下几行

calls:
    - [ addChild, ["@sonata.admin.project"]]
Run Code Online (Sandbox Code Playgroud)

使用此配置不会生成子管理员的路由。SideMenu(顶部菜单)中的链接指向/admin/project/list?childId=1&id=1

这是CategoryAdminwith的孩子的输出dump()

array:1 [?
    "sonata.admin.project" => ProjectAdmin {#406 ?}
]
Run Code Online (Sandbox Code Playgroud)

这意味着我的孩子管理员的配置似乎是正确的。我不知道为什么没有生成子管理员的路由。

我希望有人能给我一个提示,可能是什么问题。

小智 1

您的管理类中是否覆盖了 $baseRouteName 和 $baseRoutePattern ?

如果这样做,Sonata 将生成同名的子路由和父路由,从而导致父路由覆盖子路由。