mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
adding ordering to menu
This commit is contained in:
parent
5cef93abd0
commit
9f06c6d6f1
@ -5,6 +5,7 @@ namespace Chill\MainBundle\Routing;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
use Symfony\Component\Routing\RouterInterface;
|
||||
use Knp\Menu\FactoryInterface;
|
||||
use Knp\Menu\ItemInterface;
|
||||
|
||||
|
||||
/**
|
||||
@ -117,6 +118,8 @@ class MenuComposer
|
||||
}
|
||||
}
|
||||
|
||||
$this->reorderMenu($menu);
|
||||
|
||||
return $menu;
|
||||
}
|
||||
|
||||
@ -129,7 +132,8 @@ class MenuComposer
|
||||
* @param int $order
|
||||
* @return int
|
||||
*/
|
||||
private function resolveOrder($routes, $order){
|
||||
private function resolveOrder($routes, $order)
|
||||
{
|
||||
if (isset($routes[$order])) {
|
||||
return $this->resolveOrder($routes, $order + 1);
|
||||
} else {
|
||||
@ -137,6 +141,29 @@ class MenuComposer
|
||||
}
|
||||
}
|
||||
|
||||
private function reorderMenu(ItemInterface $menu)
|
||||
{
|
||||
$ordered = [];
|
||||
$unordered = [];
|
||||
|
||||
foreach ($menu->getChildren() as $name => $item) {
|
||||
$order = $item->getExtra('order');
|
||||
|
||||
if ($order !== null) {
|
||||
$ordered[$this->resolveOrder($ordered, $order)] = $name;
|
||||
} else {
|
||||
$unordered = $name;
|
||||
}
|
||||
}
|
||||
|
||||
ksort($ordered);
|
||||
|
||||
$menus = \array_merge(\array_values($ordered), $unordered);
|
||||
dump($menus);
|
||||
$menu->reorderChildren($menus);
|
||||
}
|
||||
|
||||
|
||||
public function addLocalMenuBuilder(LocalMenuBuilderInterface $menuBuilder, $menuId)
|
||||
{
|
||||
$this->localMenuBuilders[$menuId][] = $menuBuilder;
|
||||
|
Loading…
x
Reference in New Issue
Block a user