דינמי להוסיף עמודים כדי מכולה Zend_Navigation בזמן ריצה
בהמשך לפוסט האחרון שלי על Zend_Navigation, בקשות תוואי sitemap.xml ל / מותאם אישית לפעולה בקר , הודעה זו היא על dymnamically הוספת עמודים Zend_Navigation מכולה ב-script / ביצוע הריצה.
שלה כל זה טוב ויפה ציון הדפים שלך ב-ini או XML הקובץ אבל בשלב מסוים אתה הולך צריך דפי שינוי באתר שלך, כי אתה רוצה כחלק התפריט, מפת האתר, או להיכלל השביל שביל שלך. לכן מה שאנחנו צריכים לעשות הוא להוסיף עמודים כדי מכולה Zend_Navigation שלנו בזמן ריצה. דוגמאות לכך יהיה להוסיף פריטי חדשות, הודעות בלוג, או תגובות בדף, וכו '
בדוגמה זו אני הולך להוסיף כמה הודעות חדשות ini מוגדרים באופן סטטי config שלי. כדי לקבל הודעה החדשות שלי תצורות מקור השתמשתי ייצוגית אשר מחזירה מערך בפורמט הבא:
$ PagesToAdd מערך = ( 0 => מערך ( "תווית" מזויף = "> סיפור חדשותי # 5 ...', "מודול" = "www">, "נתיב" => "מדד www-', 'פעולה' "תצוגה" =>, "בקר" 'חדשות' =>, 'פרמטרים' => array ( "מזהה" => '5-החדשות מזויף קומות - 5 ') ), 1 => מערך (/ נוספים * פרטים דף /), );
כמו תבחין כי הפונקציה חזר מערך שבו כלולים מערכים המרכיבות את config מערכים עבור Zend_Navigation_Page_Mvc. לכן, על ידי לולאה מעל דפי מערך חדש Zend_Navigation ניתן ליצור מערך config. הדבר הבא לעשות כחלק הלולאה היא כדי להוסיף את הדפים במיקום הנכון (לחילופין הדפים ניתן להוסיף בכמויות גדולות על ידי שימוש - addPages> () שיטה).
כדי לעשות זאת, אתר את הדף שברצונך להוסיף את דפי משנה כדי ופשוט להוסיף את הדפים. במקרה הזה השתמשתי בקוד הבא כדי למצוא את הדף שלי:
('חדשות אחרונות' תווית ',) $ מכולה-> findOneBy -> addPage ($ מקור); אתחול ניווט הכוללת שלי bootstrap ולכן נראה כך:
/ ** * משמש לטיפול הניווט ברמה העליונה * @ * לחזור * Zend_Navigation / _initNavigation מוגן function () {$ bootstrap זה-> ("פריסה"); פריסת $ = 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 הסתם;)) אחרת זה הולך להיות יקר למדי עם הטעינה של דף זה.


















































זה בדיוק מה שחיפשתי - תודה למשל ברורה באמת. Cheers. G
נחמד לכתוב! אני כבר כמה צרות ליזום בכיתה מודל bootstrap. כל מושג למה / מודל כיתות היישום אינם זמינים מ bootstrap? "חדשות חדש ()" בכיתה שלך נקרא, במקום זה אני רוצה להוסיף את דפי הניווט על ידי מקבל עץ ניווט מהכיתה מודל. אם יש לך רעיון, בבקשה ליידע אותי! ;)
המודל שלי היה נערך על הפוסט, השם הנכון שלה בקוד הוא Pro_News והוא הרים את ידי Autoloader.
מנחש שאתה לא משתמש מודולים? אבל אם כך המודל שלך צריך להיות בשם _News עבור ZF להרים כברירת מחדל (אני לא משתמש במערכת זו את עצמי).
הייתי מציע לבדוק את הנתיב לכלול משיטה bootstrap שלך כדי לראות אם הוא מכיל "יישום / מודלים", או לכלול את הקובץ באופן ידני.
ובכן אני משתמש מודולים, רע שלי. אבל אתה מציע autoloading אמור לעבוד? ובכן, אני כבר לחפור לתוך זה קצת יותר עמוק. כרגע אני משתמש בפונקציה addPage ב BaseControllers, וזה לא באמת ביצועים hehe ידידותי .... תודה על תשובתך.
להבטיח מודל מודול שלך נקרא כראוי _News (לדוגמה) והוא צריך להרים באמצעות autoloading.
המודל שלי היה נערך על הפוסט, השם הנכון שלה בקוד הוא Pro_News והוא הרים את ידי Autoloader.
מנחש שאתה לא משתמש מודולים? אבל אם כך המודל שלך צריך להיקרא _News עבור ZF להרים כברירת מחדל (אני לא משתמש במערכת זו את עצמי).
הייתי מציע לבדוק את הנתיב לכלול משיטה bootstrap שלך כדי לראות אם הוא מכיל "יישום / מודלים", או לכלול את הקובץ באופן ידני.