只需要在 sonata admin 中编辑页面而不是列表页面
Need just edit page not listing page in sonata admin
在我的一个模块中,我没有只显示全局数据,管理员可以编辑它。
我想为此创建模块,但它会列出页面,但我需要直接编辑页面,管理员可以在 sonata admin 中编辑全局值。
有什么想法吗?
提前致谢
好的,这是您可以做的...
创建一个MenuBuilderListenerclass让他们通过注册侧边栏事件来监听菜单构建事件
在你的services.yml
app.menu_listener:
class: AppBundle\Listener\MenuBuilderListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: addMenuItems }
在您的 class 中搜索要更改为 "only edit" 的菜单项 ...
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']);
}
}
也许在较新的 KnpMenu 版本中应该有一个直接用于 MenuItem 对象的 setRoute 方法,在我的版本中它没有。
这样做,您的项目应该被替换为指向您的创建路线的项目。要获得可用路由,请在控制台中使用调试器 debug:router
如果你不想list/edit,不要忘记阻止其他路线......
在我的一个模块中,我没有只显示全局数据,管理员可以编辑它。
我想为此创建模块,但它会列出页面,但我需要直接编辑页面,管理员可以在 sonata admin 中编辑全局值。
有什么想法吗?
提前致谢
好的,这是您可以做的...
创建一个MenuBuilderListenerclass让他们通过注册侧边栏事件来监听菜单构建事件
在你的services.yml
app.menu_listener:
class: AppBundle\Listener\MenuBuilderListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: addMenuItems }
在您的 class 中搜索要更改为 "only edit" 的菜单项 ...
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']);
}
}
也许在较新的 KnpMenu 版本中应该有一个直接用于 MenuItem 对象的 setRoute 方法,在我的版本中它没有。
这样做,您的项目应该被替换为指向您的创建路线的项目。要获得可用路由,请在控制台中使用调试器 debug:router
如果你不想list/edit,不要忘记阻止其他路线......