WIP: Implement CRUD, improve menu configuration
This commit is contained in:
1 parent
c55fd85314
commit
c528156959
43 files changed
+2187
-3475
No files matched your search
@@ -25,6 +25,52 @@ abstract class AbstractMenuBuilder
|
||||
return $this->factory->createItem('root');
|
||||
}
|
||||
|
||||
protected function createMenu(array $menuItems): ItemInterface
|
||||
{
|
||||
$menu = $this->createRootElement();
|
||||
|
||||
foreach ($menuItems as $menuItem) {
|
||||
$addedItem = $this->createMenuItem($menu, $menuItem);
|
||||
if (isset($menuItem['hideChildren'])&& true === $menuItem['hideChildren']) {
|
||||
$addedItem->setDisplayChildren(false);
|
||||
}
|
||||
if (isset($menuItem['children'])) {
|
||||
foreach ($menuItem['children'] as $subMenuItem) {
|
||||
$addedSubItem = $this->createMenuItem($addedItem, $subMenuItem);
|
||||
if (isset($subMenuItem['children'])) {
|
||||
$addedSubItem->setDisplayChildren(false);
|
||||
foreach ($subMenuItem['children'] as $hiddenItem) {
|
||||
$this->createMenuItem($addedSubItem, $hiddenItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $menu;
|
||||
}
|
||||
|
||||
protected function createMenuItem(ItemInterface $menu, array $options): ItemInterface
|
||||
{
|
||||
$itemOptions = [];
|
||||
if (false !== $options['route']) {
|
||||
$itemOptions['route'] = $options['route'];
|
||||
$itemOptions['linkAttributes'] = ['title' => $options['title']];
|
||||
}
|
||||
if (isset($options['routeParameters'])) {
|
||||
$itemOptions['routeParameters'] = $options['routeParameters'];
|
||||
}
|
||||
$addedItem = $menu
|
||||
->addChild($options['title'], $itemOptions)
|
||||
->setChildrenAttribute('title', $options['title'])
|
||||
;
|
||||
if (isset($options['icon'])) {
|
||||
$addedItem->setExtra('icon', $options['icon']);
|
||||
}
|
||||
|
||||
return $addedItem;
|
||||
}
|
||||
|
||||
protected function getDefaultRouteParameters(string $parameter = 'id', string $default = '0'): array
|
||||
{
|
||||
return [$parameter => $this->requestStack->getMainRequest()->get($parameter, $default)];
|
||||
@@ -74,18 +120,19 @@ abstract class AbstractMenuBuilder
|
||||
->addChild('Logout', [
|
||||
'route' => $originalUser->getDefaultRoute(),
|
||||
'routeParameters' => ['_switch_user' => '_exit'],
|
||||
])
|
||||
->setLinkAttributes([
|
||||
'title' => 'zurück',
|
||||
'class' => 'icon-link',
|
||||
'linkAttributes' => [
|
||||
'title' => 'zurück',
|
||||
],
|
||||
])
|
||||
->setExtra('icon', 'logout')
|
||||
;
|
||||
} else {
|
||||
$menu
|
||||
->addChild('Logout', ['route' => 'app_security_logout'])
|
||||
->setLinkAttributes([
|
||||
'title' => 'Logout',
|
||||
->addChild('Logout', [
|
||||
'route' => 'app_security_logout',
|
||||
'linkAttributes' => [
|
||||
'title' => 'Logout',
|
||||
],
|
||||
])
|
||||
->setExtra('icon', 'logout')
|
||||
;
|
||||
|
||||
Reference in new issue
Block a user