2012-07-23 17 views
8

मेरे पास सिम्फनी 2 के लिए एनपीमेनू बंडल को प्रस्तुत करने के बारे में एक प्रश्न है। मैंने पढ़ा है, मिलान किए गए रूट आइटम पर "वर्तमान" कक्षा होना चाहिए। मैंने एनपी दस्तावेज पढ़ा है और वे रूटवॉटर के बारे में कुछ कह रहे हैं लेकिन मैं इसे काम नहीं कर सकता। कोई विचार?एनपी मेनू बंडल वर्तमान आइटम सिम्फनी 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

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

मैंने अर्थशास्त्र के लिए एक अंधे आँख बदल दी है, लेकिन उपरोक्त कोड नमूना जैसे दृष्टिकोण के साथ क्या गलत है? कृपया आवश्यकतानुसार प्रतिक्रिया दें।

+0

कामकाज के लिए धन्यवाद। मैं ऐसा कुछ ढूंढ रहा हूं। मुझे आशा है कि, एक दिन, KnpMenuBundle 2.x स्थिर रहेगा और हम मतदाताओं का उपयोग करने में सक्षम होंगे। –

+0

सेवा के रूप में मेनू का उपयोग करने के लिए KnpMenuBundle की मार्गदर्शिका के बाद, कंटेनर की आवश्यकता नहीं है। आप सेवा के दायरे में सेवा को स्कॉप करके अनुरोध प्राप्त कर सकते हैं। –

+0

यह उल्लेखनीय है कि कुछ मामलों में यह कामकाज विफल हो गया है। उदाहरण के लिए, पेजिनेशन का उपयोग करते समय। –

संबंधित मुद्दे