2012-07-23 27 views
8

Symfony2 için KnpMenu Bundle'ı oluşturma ile ilgili bir sorum var. Okuduğumdan, eşleşen rota öğesinde "geçerli" bir sınıf olmalı. Knp belgelerini okudum ve RouteVoter hakkında bir şeyler söylüyorlar ama çalışmayı başaramıyorum. Herhangi bir fikir?Knp Menu Bundle Geçerli Öğe Symfony 2

Oluşturucu kodu:

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

cevap

4

Bu 10 ay üzerindedir ve çözüm yukarıda özetlenen takip ancak bunu kıvrık olduğu bulunmuştur. Aşağıdaki yöntemi kullanıyorum.

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

Ben semantik için görmezden ancak ettik yukarıdaki örneğimizde gibi bir yaklaşım nesi? Lütfen gerektiği şekilde geri bildirim sağlayın.

+0

Çözüm için teşekkürler. Böyle bir şey arıyorum. Umarım bir gün KnpMenuBundle 2.x istikrarlı olur ve seçmenleri kullanabilirdik. –

+0

Menüyü servis olarak kullanmak için KnpMenuBundle kılavuzunu takip ederek, konteynere daha fazla ihtiyaç duyulmaz. İsteği istek kapsamına göre işaretleyerek talebi alabilirsiniz. –

+0

Bu geçici çözümün bazı durumlarda başarısız olduğunu belirtmek gerekir. Örneğin, sayfalandırma kullanılırken. –