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 に答える