إضافة إلى صفحات ديناميكية Zend_Navigation حاوية في وقت التشغيل
في استمرار على آخر مشاركة لي حول Zend_Navigation ، لتوجيه طلبات إلى وحدة تحكم مخصصة : sitemap.xml / العمل ، وهذا المنصب هو حول إضافة صفحات dymnamically إلى حاوية في Zend_Navigation / تنفيذ البرنامج النصي وقت التشغيل.
بكل طيبة وجيدة تحديد صفحاتك في رسائل كتبها هذا المؤلف أو أكس الملف ولكن عند نقطة ما كنت ستكون لدينا تغيير في صفحات موقعك التي تريد كجزء من خريطة الموقع ، القائمة ، تضمين أو التفصيلي ليكون في درب الخاص بك. لذا ما يتعين علينا القيام به هو إضافة صفحات إلى حاوية Zend_Navigation لدينا في وقت التشغيل. ومن أمثلة لهذا يكون في إضافة بنود الأخبار ، بلوق وظيفة ، أو تعليقات صفحة ، الخ.
في هذا المثال انا ذاهب لإضافة بعض الوظائف إلى أخبار بلدي رسائل كتبها هذا المؤلف تعريف ثابت التكوين. للحصول على تكوينات صفحتي بوست لقد استعملت فئة التي ترجع صفيف في الشكل التالي :
pagesToAdd $ = صفيف (0 => مجموعة ('العلامة' خبرا وهمية # 5...'، '=> الوحدة' => 'طريق شبكة الاتصالات العالمية' ، '' => 'شبكة الاتصالات العالمية مؤشر' ، 'العمل' = > 'عرض' ، 'تحكم' => 'الأخبار' ، 'params' => مجموعة ('الهوية' => '5وهمية الأخبار طوابق -- 5')) ، 1 => مجموعة (/ * عن الصفحة التفاصيل * /) ،) ؛ كما ستلاحظ أن وظيفة عاد صفيف التي ترد في المصفوفات التي تشكل التكوين صفائف لZend_Navigation_Page_Mvc. لذلك ، يمكن بواسطة حلقات على صفحات مجموعة Zend_Navigation الجديدة التي تم إنشاؤها من الصفيف التكوين. والشيء التالي القيام به كجزء من الحلقة هو لإضافة الصفحات في الموضع الصحيح (بدلا من ذلك يمكن إضافة صفحات بكميات كبيرة باستخدام -- addPages> الأسلوب ()).
للقيام بذلك ، حدد موقع الصفحة التي ترغب في إضافة الصفحات الفرعية وإضافة إلى مجرد صفحات. في هذه الحالة ولقد استخدم التعليمات البرمجية التالية للعثور على صفحتي :
('آخر الأخبار' تسمية '،) $ حاوية> findOneBy --> addPage ($ صفحة) ؛ initialisation بلدي الملاحة العامة في التمهيد لذلك تبدو مثل هذا :
/ ** * تستخدم لمعالجة على مستوى عال الملاحة * Zend_Navigation * @ عودة * / _initNavigation المحمية وظيفة () { دولار هذا> - التمهيد ('تصميم') ؛ تخطيط $ = دولار هذا getResource -> ('تخطيط') ؛ عرض $ = $ getView تخطيط -> () ؛ $ = Zend_Config_Ini التكوين الجديد ( APPLICATION_PATH. '/ التكوينات / navigation.ini ، APPLICATION_ENV) ؛ $ = Zend_Navigation حاوية جديدة ($ الافتراضي بين التكوين>) ؛ / / إضافة الآن آخر التقارير الإخبارية 25 $ = أخبار أخبار جديدة () ؛ $ = $ getNavigationEntries صفحات الأخبار> () ؛ foreach ($ صفحات ك $ صفحة) { $ = صفحة جديدة Zend_Navigation_Page_Mvc ($ صفحة) ؛ ('آخر الأخبار' تسمية '،) $ حاوية> findOneBy --> addPage ($ صفحة) ؛ } $ مشاهدة -> الملاحة ($ حاوية) ؛ }
على الشيء الذي يحتاج إلى إضافته هو نوع من التخزين المؤقت (باستخدام Zend_Cache يفترض ؛)) وإلا فإن هذا سيكون مكلفا للغاية مع كل تحميل الصفحة.


















































هذا فقط ما كنت أبحث عنه -- وذلك بفضل لمثال واضح حقا. هتاف. ز
آخر لطيف! لقد بعض المتاعب الشروع في فئة نموذج في التمهيد. أي فكرة لماذا التطبيق / نموذج الطبقات ليست متاحة من التمهيد؟ 'أخبار جديدة ()' يسمى الفصول الدراسية ، بدلا من ذلك كنت أود أن أضيف صفحات الاستكشاف عن طريق الحصول على شجرة التنقل من فئة النموذج. إذا كان لديك فكرة ، واسمحوا لي أن أعرف! ؛)
نموذج بلادي تم تحريره لهذا المنصب ، اسمها الصحيح في رمز Pro_News وانتقاؤها من قبل الملقم الآلي.
التخمين كنت لا تستخدم وحدات؟ ولكن إذا كان الأمر كذلك يجب أن يتم استدعاء النموذج الخاص بك ل_News زد إف لالتقاط افتراضيا (أنا لا تستخدم هذا النظام نفسي).
كنت تشير الى فحص تشمل المسار من أسلوب التمهيد لمعرفة إذا كان يحتوي على "التطبيق / النماذج" أو تضمين ملف يدويا.
كذلك يمكنني استخدام وحدات ، بلدي سيئة. ولكنك تشير autoloading يجب أن تعمل؟ حسنا ، لقد لحفر فيه أعمق قليلا. في هذه اللحظة يمكنني استخدام وظيفة addPage في BaseControllers ، وهي ليست صديقة للأداء حقا... الكالينجيون. شكرا لردكم.
ضمان يدعى النموذج الخاص بك بشكل صحيح وحدة ينبغي _News (على سبيل المثال) والتقاط باستخدام autoloading.
نموذج بلادي تم تحريره لهذا المنصب ، اسمها الصحيح في رمز Pro_News وانتقاؤها من قبل الملقم الآلي.
التخمين كنت لا تستخدم وحدات؟ ولكن إذا كان الأمر كذلك ينبغي أن يسمى النموذج الخاص بك _News لزد إف لالتقاط افتراضيا (أنا لا تستخدم هذا النظام نفسي).
كنت تشير الى فحص تشمل المسار من أسلوب التمهيد لمعرفة إذا كان يحتوي على "التطبيق / النماذج" أو تضمين ملف يدويا.