我一直在研究Symfony + SonataAdmin项目,我们卡在了Sonata KnpMenu元素的排序上。
首先,我们使用Sonada Admin插入菜单,EventListeners
根据我们需要的其他路线添加更多菜单项。这工作得很好。问题是:当我们使用本机Admin和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);
}
}