【问题标题】:Symfony2 KnpMenuBundle - Following tutorial and came across this errorSymfony2 KnpMenuBundle - 遵循教程并遇到此错误
【发布时间】:2014-08-19 21:41:04
【问题描述】:

我遵循了这个教程:

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

【问题讨论】:

    标签: symfony knpmenubundle


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,我就是这么想的。它没有说我需要传递给控制器​​的任何地方?我需要在那里调用 mainMenu 吗?
    • 如果我理解正确,那么没有。您的控制器根本不关心主菜单。只需在您希望菜单出现的任何模板中调用{{ knp_menu_render('AcmeDemoBundle:Builder:mainMenu') }}
    • 看来我需要修改它。
    【解决方案2】:

    完全按照教程,这个错误是由文件中的第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)

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2018-01-17
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多