symfony - Specify current route or template as active link KnpMenu -


ऊपर बताए अनुसार, सिम्फनी 2 में, मैं निर्दिष्ट मेनू बच्चे को नियंत्रक या टेम्पलेट में सक्रिय स्थिति के रूप में सेट करना चाहता हूं, मैं कैसे कि हासिल? इसका मतलब यह है कि, मुझे एक मेन्यू बच्चे के लिए कई मार्ग (नियंत्रक क्रिया, टेम्पलेट) मानचित्र चाहिए, यह संभव है? मुझे लगता है कि मैं नियंत्रक या टेम्पलेट में मेनू प्राप्त कर सकता हूं और इसे सक्रिय में सेट कर सकता हूं।

यह KNPMenuBundle का उपयोग करते समय पहले ही लागू किया गया है। क्लासेस स्वतः पहले आखिरी और current तत्वों के लिए उत्पन्न होते हैं


आपका मेनू स्वतः ही इस तरह दिखाई देगा:

  & lt; ul & gt; & Lt; li वर्ग = "पहले" & gt; & Lt; a href = "/ जो 1" & gt; मेनू स्तर 1 & lt; / a & gt; & Lt; / li & gt; & Lt; li वर्ग = "चालू" & gt; & Lt; a href = "/ whatever2" & gt; मेनू स्तर 2 & lt; / a & gt; & Lt; / li & gt; & Lt; li वर्ग = "अंतिम" & gt; & Lt; a href = "/ whatever3" & gt; मेनू स्तर 3 & lt; / a & gt; & Lt; / li & gt; & Lt; / ul & gt;   

यह मानते हुए कि आपने मेन्यू बिल्डर का उपयोग इस प्रकार किया है:

  // src / एकमे / आपका बंडल / मेनू / Menubuilder.php सार्वजनिक फ़ंक्शन बनाते हैं SimpleMenu (अनुरोध $ अनुरोध) {$ menu = $ this- & gt; फैक्टरी- & gt; createItem ('root'); $ मेनू- & gt; setCurrentUri ($ अनुरोध & gt; getRequestUri ()); $ मेनू- & gt; जोड़ें चाल्ड ('मेनू स्तर 1', सरणी ('मार्ग' = & gt; '_route_whatever1')); $ मेनू- & gt; जोड़बील्ड ('मेनू स्तर 2', सरणी ('मार्ग' = & gt; '_route_whatever2')); $ मेनू- & gt; जोड़बील्ड ('मेनू स्तर 3', सरणी ('मार्ग' = & gt; '_route_whatever3')); $ मेनू वापसी; }   

इसलिए, आपको वर्तमान के बजाय सक्रिय को सीएसएस लागू करना होगा जैसा कि आप देख सकते हैं, यह काम $ menu- & gt; setCurrentUri ($ request- & gt; getRequestUri ());

यदि आप मैन्युअल रूप से अपने मेनू को अनुकूलित करना चाहते हैं ( आपके मामले में, आप एक ही तत्व को मैप करने वाले कई मार्ग चाहते हैं ) आप स्विच स्टेटमेंट का उपयोग कर सकते हैं:

 < Code> // src / Acme / YourBundle / Menu / MenuBuilder.php सार्वजनिक फ़ंक्शन बनाते हैं SimpleMenu (अनुरोध $ अनुरोध) {// आपका मेनू पहले मूल रूप से // ... // एक स्विच अगर आप मैन्युअल रूप से स्विच करने के लिए इच्छाशक्ति ($ अनुरोध - & gt; प्राप्त करें ('_ मार्ग')) {case "_route_whatever1bis": $ मेनू ['मेनू स्तर 1'] - & gt; सेट चालू (सही); टूटना; मामले "_route_whatever2bis": $ मेनू ['मेनू स्तर 2'] - & gt; सेट चालू (सच); टूटना; मामले "_route_whatever3bis": $ मेनू ['मेनू स्तर 3'] - & gt; सेट चालू (सच); टूटना; } $ मेनू लौटा; }   

ध्यान दें: जिस तरह से केएनपी मेनू बंडल आपके मेनू को रेफर करता है, उसको अनुकूलित करें knp_menu.html.twig आप प्रक्रिया देख सकते हैं।

Comments