2012-07-23 8 views
8

Symfony2用のKnpMenuバンドルのレンダリングに関する質問があります。 私は読んだので、一致するルート項目に「現在の」クラスがあるはずです。私はKnpのドキュメントを読んできました。彼らはRouteVoterについて何か言っていますが、動作させることはできません。何か案は?Knp Menuバンドル現在のアイテムSymfony 2

ビルダーコード:

<?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

と私は上記で概説したソリューションを追った、しかし、私はそれが回旋されることが判明。私は以下の方法を使用します。

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()); 
     // ... 
    } 
} 

私は目が見えなくなりましたが、上記のコードサンプルのようなアプローチではどうなりますか? 必要に応じてフィードバックを提供してください。

+0

ありがとうございました。私はこのようなものを探してきました。ある日、KnpMenuBundle 2.xが安定し、有権者を利用できるようになることを願っています。 –

+0

メニューをサービスとして使用するためのKnpMenuBundleのガイドに従って、コンテナは必要なくなりました。要求スコープにサービスをスコープすることによって要求を取得できます。 –

+0

この回避策が失敗する場合があります。たとえば、ページネーションを使用する場合。 –

関連する問題