在sonata admin中为菜单项创建通知

时间:2017-09-06 07:10:25

标签: symfony notifications sonata-admin sonata

有人知道如何为侧边栏中的菜单项创建通知系统吗?

例如,如果您有侧栏条目

Articles

并在后台添加了一篇新文章(例如,通过sql脚本导入)。然后菜单项应显示为

Articles (1)

是否有我关注的教程?

1 个答案:

答案 0 :(得分: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 ] ]

之后,您可以编写修改菜单的类:

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