แบบไดนามิกเพิ่มหน้าเพื่อบรรจุ Zend_Navigation ที่รันไทม์
In, ความต่อเนื่องล่าสุดของฉันในการโพสต์เกี่ยวกับ Zend_Navigation ขอเส้นทางสำหรับ sitemap.xml กับตัวควบคุมแบบกำหนดเอง / การดำเนินการ เรื่องนี้เป็นเรื่องเกี่ยวกับ dymnamically การเพิ่มหน้าเว็บที่จะบรรจุ Zend_Navigation ที่รันไทม์ปฏิบัติการ / script
ทุกคนอย่างดีและดีที่ระบุหน้าเว็บของคุณใน ini หรือ XML แฟ้ม แต่ที่เว็บไซต์บางจุดที่คุณกำลังจะเปลี่ยนหน้าเว็บของคุณได้ในที่ที่คุณต้องการเป็นส่วนหนึ่งของเมนู sitemap,, หรือจะรวมอยู่ในเส้นทางของคุณแสดงเส้นทาง ดังนั้นสิ่งที่เราต้องทำคือการเพิ่มหน้าเว็บที่จะบรรจุ Zend_Navigation รันไทม์ของเราได้ที่ ตัวอย่างสำหรับการนี้จะเป็นในการเพิ่มรายการข่าวโพสต์ blog หรือหน้าแสดงความคิดเห็น ฯลฯ
ในตัวอย่างนี้ผมจะเพิ่มโพสต์ข่าวที่จะ ini config กำหนดแบบคงที่ของฉัน เพื่อรับข่าวสารการกำหนดค่าหน้าโพสต์ของฉันฉันใช้คลาสซึ่งจะส่งกลับอาร์เรย์ในรูปแบบดังต่อไปนี้ :
$ pagesToAdd อาร์เรย์ = (0 => อาร์เรย์ ('ป้าย''เรื่องข่าวปลอม # 5 ...','=> โมดูล'=>'เส้นทาง www',''=>'สร้างดัชนี www การกระทำ',''= 'มุมมอง'>'ควบคุม''ข่าว'=>','params'= array> ('id'=> '5 - Fake - ข่าวเรื่องราว -- 5')), 1 => อาเรย์ (* / หน้าเพิ่มเติม รายละเอียด *),); ขณะที่คุณจะสังเกตเห็นว่าทำงานได้กลับมาอาเรย์ที่มีอยู่ในอาร์เรย์ที่ทำขึ้นอาร์เรย์ config สำหรับ Zend_Navigation_Page_Mvc ดังนั้นในการวนรอบขึ้นไปหน้า Zend_Navigation อาเรย์ใหม่สามารถสร้างจากอาร์เรย์ config สิ่งที่ต้องทำต่อไปเป็นส่วนหนึ่งของห่วงคือการที่จะเพิ่มหน้าที่ในตำแหน่งที่ถูกต้อง (หรือมิฉะนั้นหน้าจะสามารถเพิ่มจำนวนมากโดยใช้ -- addPages> () method)
เมื่อต้องการทำเช่นนี้ให้ค้นหาเพจที่คุณต้องการเพิ่มเพจย่อยไปและก็เพิ่มหน้า ในกรณีนี้ฉันได้ใช้รหัสต่อไปนี้เพื่อค้นหาหน้าเว็บของฉัน :
('ข่าว''ป้าย',) $ บรรจุ> findOneBy --> addPage ($ หน้า); initialisation นาวิเกตโดยรวมใน bootstrap ของฉันจึงมีลักษณะดังนี้
/ ** * ใช้ในการจัดการนาวิเกตระดับบนสุด * * Zend_Navigation กลับ @ * / _initNavigation ฟังก์ชั่นการป้องกัน () { $ this -> bootstrap ('รูป'); $ เค้าโครง = $ this getResource -> ('รูปแบบ'); มุมมอง = $ $ getView เค้าโครง -> (); $ config = new Zend_Config_Ini ( APPLICATION_PATH '/ configs navigation.ini /'APPLICATION_ENV); ภาชนะ $ = Zend_Navigation ใหม่ ($ เริ่มต้น config ->); / / ตอนนี้เพิ่มช่วง 25 รายงานข่าว ข่าวข่าวใหม่ = $ (); หน้า $ = $ getNavigationEntries ข่าว -> (); foreach ($ หน้าเป็น $ หน้า) { $ page = Zend_Navigation_Page_Mvc ใหม่ ($ หน้า); ('ข่าว''ป้าย',) $ บรรจุ> findOneBy --> addPage ($ หน้า); } $ ดูการ -> ($ ภาชนะ); }
ในสิ่งที่ต้องการที่จะเพิ่มเป็นบางรูปแบบของการใช้แคช (โดยใช้ Zend_Cache น่า;)) อย่างอื่นนี้เป็นไปได้ค่อนข้างแพงกับโหลดแต่ละหน้า


















































นั่นเป็นเพียงสิ่งที่ฉันถูกมองหา -- ขอขอบคุณสำหรับตัวอย่างที่ชัดเจนจริงๆ ไชโย G