2017-09-06 2 views
1

Est-ce que quelqu'un sait comment créer un système de notification pour les éléments de menu dans la barre latérale?Création de notifications pour les éléments de menu dans sonata admin

Par exemple, si vous avez une entrée de barre latérale

Articles 

et en arrière-plan, un nouvel article a été ajouté (par exemple par l'importation via un script SQL). Ensuite, l'entrée de menu doit être affichée comme

Articles (1) 

Existe-t-il un tutoriel pour mon problème?

Répondre

1

Vous pouvez modifier les éléments de menu de la barre latérale. Pour ce faire, vous devez créer un programme d'écoute qui configurera le menu de la manière que vous souhaitez. Vous pouvez le faire avec ce code:

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 ] ] 

Après cela, vous pouvez écrire la classe qui modifient le menu:

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; 
    } 
} 

Ceci est seulement un exemple, mais est le chemin que je prendrai si je besoin de faire cette fonctionnalité, j'espère que cela peut vous aider à

vous avez plus d'informations sur ce ici: https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_knp_menu.html

+0

C'était incroyablement facile! Je vous remercie ... –