2012-05-29 9 views
5

मैं सिम्फनी 2 के साथ वेब विकास के लिए नया हूं (हालांकि निश्चित रूप से वेब विकास के लिए नया नहीं है), और मैं बस एक मध्यम आकार की परियोजना शुरू करने जा रहा हूं, जिसे बंडलों में काटा जाएगा , क्योंकि ऐप की प्रत्येक स्थापना में उपलब्ध कार्यक्षमता का एक अलग सेटअप हो सकता है।सिम्फनी 2 - उपलब्ध बंडलों से मेनू प्रविष्टियां उत्पन्न करें

मैं उपलब्ध बंडलों से गतिशील रूप से अपना नेविगेशन उत्पन्न करना चाहता हूं, उदा। यदि बंडल "foo" सक्रिय है, तो foo मुख्य नियंत्रक कार्रवाई के मार्ग के साथ मेनू प्रविष्टि दिखाई देनी चाहिए।

आम तौर पर, इस पर मेरा लेना कहीं भी एक सिंगलटन बनाना होगा, जिसे मैं एक बंडल के लोड() फ़ंक्शन के दौरान भर दूंगा, और प्रतिपादन के दौरान, मैं सिंगलटन आउटपुट करूंगा।

लेकिन symfony2 इस भाग में बहुत लचीलापन प्रदान करता है, इसलिए मैं वर्तमान में मूल्यांकन कर रहा हूं कि कोई बेहतर तरीका हो सकता है या नहीं।

क्या सेवाएं यहां जा सकती हैं? या घटनाओं? या निर्भरता इंजेक्शन के साथ कुछ, तो बंडलों को निर्माण समय पर एक नेविगेशन कॉन्फ़िगरेशन एलिमेंट का उदाहरण मिलता है?

इस पर कोई इनपुट या विचार, या शायद उदाहरण के कुछ लिंक यह कैसे करें, इसकी सराहना की जाएगी।

सादर, जेन्स

उत्तर

6

मैं बात यह करने के लिए सबसे अच्छा तरीका है, निर्भरता इंजेक्शन टैग का उपयोग करने के लिए है। आपको एक निर्भरता इंजेक्शन एक्सटेंशन बनाना होगा और एक "टैग" प्रदान करना होगा जिसका उपयोग विभिन्न मेनू द्वारा उनके मेनू प्रविष्टियों को पंजीकृत करने के लिए किया जा सकता है।

मैं आपको पूरी प्रक्रिया का वर्णन नहीं करूंगा क्योंकि इंटरनेट में इसके बारे में बहुत सारे संसाधन हैं।

लेकिन आप क्या (सिंगलटन आप जहां के बारे में बात) एक संकलक पास लागू करने से

  • प्रक्रिया टैग, इस संकलक करने के लिए

    1. मेनू प्रविष्टियों पकड़े सेवा को लागू करने का एक त्वरित रूपरेखा देने के लिए पास नेविगेशन क्लास के साथ टैग की गई सभी सेवाओं की तलाश होगी और उन्हें मेनू सेवा
    2. एक ट्रिग फ़ंक्शन बनाएं जो मेनू को पुनर्प्राप्त करने के लिए सेवा का उपयोग करेगा और इसे
    3. टैग का उपयोग करने वाले बंडल लिखें और मेनू आइटम प्रदान करें

    कुछ संसाधन यहां जो आपकी मदद कर सकते हैं:

    http://symfony.com/doc/current/components/dependency_injection/tags.html http://miguel.ibero.me/es/post/2012-04-28/adding-tags-to-symfony.html

    मैं वर्तमान में उपयोग करता है डि रूप में अच्छी तरह से टैग करता सिम्फोनी के लिए एक Solr बंडल को लागू कर रहा हूँ। मेरे पास इंडेक्समेनगर नामक एक वर्ग है जो विभिन्न बंडलों से विभिन्न सोलर इंडेक्स प्रबंधित करता है। मैं डीआई टैग का उपयोग करता हूं ताकि अन्य बंडल उन सामग्री/संस्थाओं को पंजीकृत कर सकें जिन्हें वे सोलर में अनुक्रमित करना चाहते हैं। सिद्धांत मेनू आइटम के समान ही है।

    यहाँ देखें: https://github.com/roomthirteen/Room13SolrBundle

    महत्वपूर्ण फ़ाइलें हैं:

    संकलक पास जोड़ने: https://github.com/roomthirteen/Room13SolrBundle/blob/master/Room13SolrBundle.php संकलक ही पारित: https://github.com/roomthirteen/Room13SolrBundle/blob/master/DependencyInjection/Compiler/SolrCompilerPass.php

    आशा व्यक्त की कि मदद करता है। कोई और questins? पूछने में संकोच नहीं करते हैं।

  • +0

    यह बहुत रोचक लगता है, और शायद इसे करने के लिए सबसे symfony'ish तरीका पसंद है। मैं इसे देख लूंगा और कोशिश करूँगा, और अगर मैंने सोचा कि यह काम करता है तो वापस आ जाएगा। कि आपके इनपुट के लिए आप बहुत अधिक हैं! – jhoffrichter

    +0

    कोई जांच नहीं। अगर आपको यह जवाब सही है, तो कृपया इसे ध्वजांकित करें;) – room13

    +0

    जैसे ही मैंने इसका मूल्यांकन किया है, मैं करूँगा :) – jhoffrichter