KnpMenuBundle和建议的教程示例:出了什么问题?

时间:2012-06-22 16:21:18

标签: symfony menu knpmenubundle

KNP MenuBundle是一个Symfony2软件包,用于以非常动态的方式处理菜单。该软件包提供了一个简单的教程示例,提供了here。 在提出的示例中,在Builder类中,作者认为必须在 $ menu 对象上调用函数 setCurrentUri()。但是, $ menu是MenuItem 类的一个实例,它不实现上述功能。

要使答案自包含,我会报告提供的示例类的代码here

<?php
// src/Acme/DemoBundle/Menu/Builder.php
namespace Acme\DemoBundle\Menu;

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->setCurrentUri($this->container->get('request')->getRequestUri());

        $menu->addChild('Home', array('route' => 'homepage'));
        $menu->addChild('About Me', array(
            'route' => 'page_show',
            'routeParameters' => array('id' => 42)
        ));
        // ... add more children

        return $menu;
    }
}

PS:请注意,此示例中缺少重要的导入,为了完整起见,我在下面进行了报告:

use Symfony\Component\HttpFoundation\Request;

1 个答案:

答案 0 :(得分:2)

我也在寻找文档更新,但作为临时解决方案,您可以在deps中设置版本,如下所示:

[KnpMenu]
    git=https://github.com/KnpLabs/KnpMenu.git
    version=v1.1.2

[KnpMenuBundle]
    git=https://github.com/KnpLabs/KnpMenuBundle.git
    target=/bundles/Knp/Bundle/MenuBundle
    version=v1.1.0