我遵循了本教程:
https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md#installation
并且遇到了以下错误:
An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "page_show" as such route does not exist.") in /var/www/bundles/src/Acme/DemoBundle/Resources/views/Default/index.html.twig at line 4.
我在这里缺少一个将某些东西传递给控制器的步骤吗?
来自链接:
use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;
class Builder extends ContainerAware
{
public function mainMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$menu->addChild('Home', array('route' => 'homepage'));
$menu->addChild('About Me', array(
'route' => 'page_show',
'routeParameters' => array('id' => 42)
));
// ... add more children
return $menu;
}
}
要实际渲染菜单,只需在任何Twig模板中的任何位置执行以下操作:
{{ knp_menu_render('AcmeDemoBundle:Builder:mainMenu') }}
答案 0 :(得分:1)
执行./app/console router:debug
- 它会显示您申请中注册的所有路线。我猜测page_show不是其中之一。
您正在使用的文档可能希望您将自己的路径/页面添加到菜单中,如下所示:
$menu->addChild('Home', array('route' => 'homepage'));
其中'主页'必须已经存在。 ' show_page'也是如此。因此,您需要一个处理show_page路由请求的控制器,或者交换show_page以获取您已在应用中定义的路由。希望我有道理。
答案 1 :(得分:0)
完全遵循本教程,此错误是由文件
中的第25行引起的2 // src/Acme/MainBundle/Menu/MenuBuilder.php
...
25 $menu->addChild('Home', array('route' => 'homepage'));
教程代码假定您有一个名为'主页的路线'。假设您在自定义Bundle中进行了设置,那么解决此问题的快速方法就是让您可以开始运行教程...
// src/Acme/MainBundle/Resources/config/routing.yml
...并从那里复制主页路线(看起来像acme_main_bundle_homepage)