在 sonata admin 中为菜单项创建通知
Creating notifications for menu items in sonata admin
有人知道如何为边栏中的菜单项创建通知系统吗?
例如,如果您有侧边栏条目
Articles
并且在后台添加了一篇新文章(例如通过 sql 脚本导入)。那么菜单项应该显示为
Articles (1)
有我关注的教程吗?
您可以修改侧边栏菜单项。
为此,您必须创建一个侦听器,以您想要的方式配置菜单。您可以使用以下代码执行此操作:
app.menu_listener:
class: AppBundle\EventListener\MenuBuilderListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: addMenuItems }
calls:
- [ setDependencies, [ @doctrine.orm.entity_manager ] ]
之后就可以写修改菜单的class了:
namespace AppBundle\EventListener;
use AppBundle\Entity\Configuration;
use Sonata\AdminBundle\Event\ConfigureMenuEvent;
use Doctrine\ORM\EntityManager;
class MenuBuilderListener {
/** @var EntityManager $em */
private $em;
public function addMenuItems(ConfigureMenuEvent $event)
{
$articles = $this->em->getRepo('AppBundle:Article')->findAll();
$menu = $event->getMenu();
$articleMenu = $menu->getChild('sonata.admin.group.articles');
$articleMenu->setLabel('Articles <span>' . $articles->count() . '</span>')
}
public function setDependencies(EntityManager $em, Translator $translator) {
$this->em = $em;
}
}
这只是一个示例,但如果我需要执行此功能,我将采用这种方式,希望这对您有所帮助
你在这里有更多关于这个的信息:https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_knp_menu.html
有人知道如何为边栏中的菜单项创建通知系统吗?
例如,如果您有侧边栏条目
Articles
并且在后台添加了一篇新文章(例如通过 sql 脚本导入)。那么菜单项应该显示为
Articles (1)
有我关注的教程吗?
您可以修改侧边栏菜单项。
为此,您必须创建一个侦听器,以您想要的方式配置菜单。您可以使用以下代码执行此操作:
app.menu_listener:
class: AppBundle\EventListener\MenuBuilderListener
tags:
- { name: kernel.event_listener, event: sonata.admin.event.configure.menu.sidebar, method: addMenuItems }
calls:
- [ setDependencies, [ @doctrine.orm.entity_manager ] ]
之后就可以写修改菜单的class了:
namespace AppBundle\EventListener;
use AppBundle\Entity\Configuration;
use Sonata\AdminBundle\Event\ConfigureMenuEvent;
use Doctrine\ORM\EntityManager;
class MenuBuilderListener {
/** @var EntityManager $em */
private $em;
public function addMenuItems(ConfigureMenuEvent $event)
{
$articles = $this->em->getRepo('AppBundle:Article')->findAll();
$menu = $event->getMenu();
$articleMenu = $menu->getChild('sonata.admin.group.articles');
$articleMenu->setLabel('Articles <span>' . $articles->count() . '</span>')
}
public function setDependencies(EntityManager $em, Translator $translator) {
$this->em = $em;
}
}
这只是一个示例,但如果我需要执行此功能,我将采用这种方式,希望这对您有所帮助
你在这里有更多关于这个的信息:https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_knp_menu.html