गतिशील रूप से क्रम में करने के लिए कंटेनर Zend_Navigation पृष्ठ जोड़ें
, के बारे में Zend_Navigation पोस्ट में निरंतरता पर मेरी एक अंतिम / कार्रवाई नियंत्रक कस्टम मार्ग अनुरोधों के लिए sitemap.xml , इस पोस्ट निष्पादन के बारे में है / script क्रम Zend_Navigation कंटेनर में एक dymnamically जोड़ने पृष्ठों के लिए.
अपने सभी अच्छी तरह से और या ini में एक अच्छा पृष्ठों को निर्दिष्ट अपने xml फ़ाइल लेकिन स्थल पर कुछ बिंदु पर अपने आप में पृष्ठों को बदलने के लिए हो रहा है कि आप निशान, मेनू चाहते हैं के रूप में भाग साइटमैप, ब्रेडक्रम्ब में अपने शामिल करने के लिए या किया जाना है. इसलिए कि हम क्या करने के लिए है हमारे क्रम में Zend_Navigation कंटेनर को पृष्ठ जोड़ने की जरूरत है. इस के लिए उदाहरण समाचार आइटम, ब्लॉग पोस्ट, या पृष्ठ टिप्पणियां, आदि को जोड़ने में किया जाएगा
इस उदाहरण में मैं अपने statically परिभाषित पहल करने के लिए कुछ खबर पोस्ट विन्यास जोड़ने के लिए जा रहा हूँ. मेरी खबर के बाद पृष्ठ विन्यास पाने के लिए मैं एक वर्ग है जो निम्न स्वरूप में एक सरणी रिटर्न का उपयोग किया है:
$ = सरणी pagesToAdd ( = 0> सरणी ( 'लेबल' => 'नकली खबर ...', # 5 कहानी 'मॉड्यूल' => 'www', 'मार्ग' => 'www-सूचकांक', 'कार्रवाई' => 'देख', 'नियंत्रक' => 'खबर', 'Params' => सरणी ( = 'पहचान'> '5-नकली-खबर कहानी - 5 ') ), 1 => सरणी (/ * अधिक पृष्ठ का विवरण * /), );
जैसा कि आप ध्यान देंगे कि समारोह एक सरणी जिसमें arrays जो विन्यास बनाने के लिए Zend_Navigation_Page_Mvc arrays निहित हैं लौट आया है. इसलिए, नए सरणी Zend_Navigation पन्नों पर looping द्वारा विन्यास सरणी से बनाया जा सकता है. अगली बात के रूप में पाश के हिस्से के लिए सही स्थिति में पृष्ठों को जोड़ने के लिए है करने के लिए (का उपयोग करके वैकल्पिक रूप से पृष्ठों को थोक में जोड़ा जा सकता है -> addPages () विधि).
ऐसा करने के लिए, पृष्ठ करने के लिए आप उप पृष्ठों को जोड़ने और बस पृष्ठों को जोड़ना चाहते खोजें. इस मामले में मैं निम्नलिखित करने के लिए अपने पृष्ठ मिल कोड का इस्तेमाल किया है:
कंटेनर-> $ findOneBy ('लेबल', 'समाचार नवीनतम') -> addPage ($ पृष्ठ); मेरे बूटस्ट्रैप में समग्र नेविगेशन initialisation इसलिए इस तरह दिखता है:
** / * शीर्ष स्तर नेविगेशन से निपटने के लिए उपयोग किया * * @ वापसी Zend_Navigation * / संरक्षित समारोह _initNavigation () { इस-> $ बूटस्ट्रैप ('लेआउट'); $ = $ इस लेआउट> getResource ('लेआउट'); $ = $ दृश्य लेआउट> getView (); $ Config = नए Zend_Config_Ini ( APPLICATION_PATH. '/ Configs navigation.ini /' APPLICATION_ENV); $ = कंटेनर नया Zend_Navigation ($ config-> डिफ़ॉल्ट); / / अब पिछले 25 समाचार रिपोर्टों जोड़ें $ = नए समाचार समाचार (); $ पृष्ठ = $ समाचार> getNavigationEntries (); foreach ($ $ के रूप में पृष्ठों पृष्ठ) { $ पृष्ठ = नए Zend_Navigation_Page_Mvc ($ पृष्ठ); कंटेनर-> $ findOneBy ('लेबल', 'समाचार नवीनतम') -> addPage ($ पृष्ठ); } $ देखने> नेविगेशन ($ कंटेनर); }
पर बात हो गयी है कि जरूरत कैशिंग रूप से कुछ है (का उपयोग Zend_Cache शायद;)) अन्यथा इस लोड पृष्ठ है प्रत्येक जाने के साथ महंगा होना काफी.


















































कि अभी मैं क्या देख रहा था - एक बहुत स्पष्ट उदाहरण के लिए धन्यवाद. चियर्स. जी
अच्छी पोस्ट! मैं कुछ परेशानी बूटस्ट्रैप में एक मॉडल के वर्ग की शुरुआत की है. कोई सुराग क्यों आवेदन मॉडल / वर्गों बूटस्ट्रैप से उपलब्ध नहीं हैं? अपने वर्ग 'कहा जाता है नया (समाचार), बजाय मैं एक मॉडल के वर्ग से एक नेविगेशन पेड़ रही द्वारा नेविगेशन पृष्ठ जोड़ना चाहते हैं. यदि आप एक विचार है, कृपया मुझे पता है! ;)
मेरे मॉडल पद के लिए संपादित किया गया था, अपने कोड में सही नाम Pro_News है और autoloader द्वारा उठाया.
अनुमान लगा आप मॉड्यूल का उपयोग नहीं कर रहे हो? लेकिन यदि ऐसा है तो अपने मॉडल ZF के लिए _News ऊपर डिफ़ॉल्ट रूप से लेने के लिए (मैं यह प्रणाली अपने आप उपयोग नहीं करते हैं) कहा जाता है होना चाहिए.
मैं जाँच अपने बूटस्ट्रैप विधि से पथ शामिल करने के लिए देखो अगर यह "मॉडल / अनुप्रयोग" हो या फ़ाइल मैन्युअल रूप से शामिल हैं का सुझाव था.
वैसे मैं मॉड्यूल, मेरा बुरा उपयोग करें. लेकिन आप काम करना चाहिए autoloading सुझाव है? खैर, मैं इस बारे में गहरी खुदाई करने के लिए एक सा है. इस समय मैं BaseControllers, जो वास्तव में दोस्ताना प्रदर्शन ... hehe नहीं है addPage फ़ंक्शन का उपयोग करें. आपके उत्तर के लिए धन्यवाद.
सुनिश्चित करने के लिए अपने मॉड्यूल मॉडल सही नाम है (उदाहरण के लिए) _News यह और लेने autoloading का उपयोग करना चाहिए.