Я работал над проектом Symfony + SonataAdmin, и мы застряли на упорядочивании элементов в Sonata KnpMenu.
Сначала мы использовали Sonada Admin для вставки в меню и EventListeners
чтобы добавить больше пунктов меню на основе других маршрутов, которые нам нужны. Это работало нормально. Проблема в том, что когда мы использовали как нативный админ, так и EventListeners
чтобы добавить параметры, их алфавитный порядок распался, и параметры были разделены на что-то вроде:
A option (EVTL)
E option (EVTL)
F option (EVTL)
B option (Adm)
C option (Adm)
D option (Adm)
Пробовал осматривать много мест, и никто не мог мне помочь с этим.
Я пытался достичь чего-то похожего, и я решаю это, как в примере ниже (я не знаю, есть ли лучшее решение, но это сработало для меня). Я только что создал подписчик на событие:
class ConfigureMenuEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
ConfigureMenuEvent::SIDEBAR => ['onConfigureMenu', 10]
];
}
public function onConfigureMenu(ConfigureMenuEvent $event)
{
$children = $event->getMenu()->getChildren();
// todo some sorting operation with array
$event->getMenu()->setChildren($children);
}
}
Других решений пока нет …