有人知道如何为侧边栏中的菜单项创建通知系统吗?
例如,如果您有侧栏条目
Articles
并在后台添加了一篇新文章(例如,通过sql脚本导入)。然后菜单项应显示为
Articles (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