Symfony2 KnpMenuBundle - 按照教程并遇到此错误

时间:2014-06-10 03:02:12

标签: symfony knpmenubundle

我遵循了本教程:

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') }}

2 个答案:

答案 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)