8

我有一个关于为 Symfony2 渲染 KnpMenu Bundle 的问题。根据我的阅读,匹配的路线项目应该有一个“当前”类。我已经阅读了 Knp 文档,他们在说一些关于 RouteVoter 的内容,但我无法使其正常工作。有任何想法吗?

生成器代码:

<?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->addChild('Home', array('route' => 'index'));
        $menu->addChild('About Me', array('route' => 'products'));

        return $menu;
    }
}
4

2 回答 2

5

10 个月过去了,我遵循了上面概述的解决方案,但是我发现它很复杂。我使用以下方法。

class Builder extends ContainerAware
{
    public function mainMenu(FactoryInterface $factory, array $options)
    {
        $menu = $factory->createItem('root');
        // Manually set the current URI.
        $menu->setCurrentUri($this->container->get('request')->getRequestUri());
        // ... 
    }
}

我对语义视而不见,但是像上面的代码示例这样的方法有什么问题?请根据需要提供反馈。

于 2013-06-04T15:05:05.600 回答
4

好的,显然这个解决方案似乎有效: https ://github.com/KnpLabs/KnpMenuBundle/issues/122#issuecomment-6563863

于 2012-07-23T11:20:59.627 回答