0

我遵循了本教程:

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

2 回答 2

1

做一个./app/console router:debug- 它会向您显示在您的应用程序中注册的所有路由。我猜 page_show 不是其中之一。

您使用的文档可能希望您将自己的路线/页面添加到菜单中,如下所示:

$menu->addChild('Home', array('route' => 'homepage'));

“主页”必须已经存在。“show_page”也是如此。因此,您需要一个控制器来处理对 show_page 路由的请求,或者将 show_page 交换为您已经在应用程序中定义的路由。希望我说得通。

于 2014-06-10T03:59:57.080 回答
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)

于 2014-08-19T13:41:04.903 回答