在 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