/** * {@inheritdoc} * NEXT_MAJOR : make this method private. */ public function buildBreadcrumbs(AdminInterface $admin, $action, ItemInterface $menu = null) { if (!$menu) { $menu = $admin->getMenuFactory()->createItem('root'); $menu = $this->createMenuItem($admin, $menu, 'dashboard', 'SonataAdminBundle', array('uri' => $admin->getRouteGenerator()->generate('sonata_admin_dashboard'))); } $menu = $this->createMenuItem($admin, $menu, sprintf('%s_list', $admin->getClassnameLabel()), null, array('uri' => $admin->hasRoute('list') && $admin->isGranted('LIST') ? $admin->generateUrl('list') : null)); $childAdmin = $admin->getCurrentChildAdmin(); if ($childAdmin) { $id = $admin->getRequest()->get($admin->getIdParameter()); $menu = $menu->addChild($admin->toString($admin->getSubject()), array('uri' => $admin->hasRoute('edit') && $admin->isGranted('EDIT') ? $admin->generateUrl('edit', array('id' => $id)) : null)); return $this->buildBreadcrumbs($childAdmin, $action, $menu); } if ('list' === $action && $admin->isChild()) { $menu->setUri(false); } elseif ('create' !== $action && $admin->hasSubject()) { $menu = $menu->addChild($admin->toString($admin->getSubject())); } else { $menu = $this->createMenuItem($admin, $menu, sprintf('%s_%s', $admin->getClassnameLabel(), $action)); } return $menu; }