Я хотел бы вставить элементы меню, такие как дерево. У меня есть эта конфигурация в данный момент:Вложенные пункты меню на боковой панели SonataAdminBundle
dashboard:
groups:
company:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Company
items:
- sonata.admin.company
- sonata.admin.brand
- sonata.admin.media
- sonata.admin.message
territory:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Territory
items:
- sonata.admin.territory
- sonata.admin.target
reps:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Representative
items:
- sonata.admin.representative
- sonata.admin.email
- sonata.admin.targetbrand
- sonata.admin.territorybrand
И я хотел бы иметь что-то вроде:
dashboard:
groups:
company:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Company
label_catalogue: PDOneBundle
items:
- sonata.admin.company
- sonata.admin.brand
- sonata.admin.media
- sonata.admin.message
territory:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Territory
label_catalogue: PDOneBundle
items:
- sonata.admin.territory
- sonata.admin.target
reps:
icon: <i class="fa fa-lg fa-fw fa fa-cogs"></i>
label: Representative
label_catalogue: PDOneBundle
items:
- sonata.admin.representative
- sonata.admin.email
Как я могу сделать это? Возможно?
UPDATE
Основываясь на docs по SonataAdminBundle и по рекомендуемого @ Хьюго Бриана- я сделал некоторые изменения по extending the menu, так что я создал файл под PDI\PDOneBundle\EventListener\MenuBuilderListener.php
и выглядит следующим образом:
namespace PDI\PDOneBundle\EventListener;
use Sonata\AdminBundle\Event\ConfigureMenuEvent;
class MenuBuilderListener
{
public function createMainMenu(ConfigureMenuEvent $event)
{
$menu = $event->getMenu();
$menu
->addChild('Dashboard', array('uri' => '/'))
->setAttribute('icon', 'fa fa-home');
$menu
->addChild('Company', array())
->setAttribute('icon', 'fa fa-inbox')
->addChild('Company', array(
'route' => 'admin_pdi_pdone_company_list',
))
->setAttribute('icon', 'fa fa-inbox')
->getParent()
->addChild('Brand', array(
'route' => 'admin_pdi_pdone_brand_list',
))
->setAttribute('icon', 'fa fa-inbox')
->addChild('Media', array(
'route' => 'admin_pdi_pdone_media_list',
))
->setAttribute('icon', 'fa fa-inbox')
->getParent();
}
}
Затем я зарегистрировал слушателя по адресу PDI\PDOneBundle\Resources\config\services.yml
следующим образом:
services:
app.menu_listener:
class: PDI\PDOneBundle\EventListener\MenuBuilderListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: createMainMenu }
Но не работает с тех пор, пока по-прежнему отображается такое же меню по умолчанию. Любой совет?
Можете ли вы написать небольшой код, чтобы показать мне, как это сделать? Я нахожусь на хозяине, как вы сказали мне, но не совсем ясно, как вообще вложить меню. Я хочу, чтобы вложенные действия администратора по умолчанию не добавляли новую запись в меню, как? – ReynierPM
@ReynierPM Я обновил свой ответ ссылкой, где все объяснено подробно; мой плохой о первом, я думал, что документация обновлена. –
Можете ли вы взглянуть на мое редактирование? Это не работает для меня :-( – ReynierPM