只需在sonata admin中编辑页面不列出页面

时间:2017-11-07 13:07:35

标签: symfony sonata-admin

在我的一个模块中,我只显示全局数据,管理员可以编辑它。

我想为此创建模块,但它会列出页面,但我需要直接编辑页面,管理员可以在sonata admin中编辑全局值。

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

好的,这就是你能做的......

创建一个MenuBuilderListener类,让他们通过注册侧栏事件来收听菜单构建事件

在您的services.yml

    app.menu_listener:
        class: AppBundle\Listener\MenuBuilderListener
        tags:
            - { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: addMenuItems }

在您的班级中,搜索您要更改为的菜单项"仅编辑" ......

class MenuBuilderListener
{
    public function addMenuItems(ConfigureMenuEvent $event)
    {
        $event->getMenu()->removeChild('the_name_of_your_menu_item');
        $event->getMenu()->addChild('the_name_of_your_menu_item', ['route' => 'your_route_to_create_view']);
    }

}

Mabe在较新的KnpMenu版本中应该有一个直接用于MenuItem对象的setRoute方法,在我的版本中它没有。

执行此操作时,您的项目应替换为指向您的创建路线的项目。要获得可用的路由,请在调试台中使用debug:router

如果您不想列出/编辑等等,请不要忘记阻止其他路线...