在Symfony5.0应用程序中,我想使用KnpMenuBundle。我通过运行
composer require knplabs/knp-menu-bundle "^3.0"这会自动在ProjectRoot/config/bundles.php中创建一个条目“:
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true]当然,它也下载了这个包。
文档(在:https://symfony.com/doc/master/bundles/KnpMenuBundle/index.html中找到)声明要配置包,您应该编辑文件"app/config/config.yml“。Symfony 5不再有这个文件了--但是对于"ProjectRoot/ config /packages“中的每个”包“,只有一个配置文件。但是,没有为KnpMenuBundle创建配置文件。我自己怎么能做到这一点呢?意思是:命名约定是什么?我如何告诉包实际使用配置文件?
还有另一个问题。在文档中,它说在小枝模板中呈现菜单的工作方式如下所示:
{{ knp_menu_render('AppBundle:Builder:mainMenu') }}对于Symfony 5,正确的语法/路径是什么?
发布于 2020-01-14 17:22:57
KnpMenuBundle的配置是可选的。这就是没有创建配置文件的原因。在Symfony 4和5中,您只需手动在config/packages目录中添加yaml配置文件即可。它将被自动读取。这个文件的好名字可能是knp_menu.yaml。在配置文件中,您使用与文档相同的内容。例如:
knp_menu:
twig:
template: KnpMenuBundle::menu.html.twig若要呈现可使用的菜单,请执行以下操作
{{ knp_menu_render('App:Builder:mainMenu') }}其中Builder是src/Menu目录中类的名称,mainMenu是从类(看医生)调用的方法。
更新
如果我没有错,您必须从Symfony 4定义作为服务的生成器类,这略有不同。由于您可以从文档中读取,您现在将呈现您的菜单,给出服务的别名。
{{ knp_menu_render('main') }}(将所有AppBundle事件更改为App)。
https://stackoverflow.com/questions/59736410
复制相似问题