Dinamis menambahkan halaman untuk kontainer Zend_Navigation pada saat runtime
Dalam kelanjutan di posting terakhir saya tentang Zend_Navigation, permintaan Rute untuk sitemap.xml untuk kontrol kustom / tindakan , posting ini adalah tentang dymnamically menambahkan halaman ke wadah Zend_Navigation saat runtime / eksekusi script.
Its semua baik dan bagus menentukan halaman Anda dalam Suami atau xml file tetapi pada beberapa titik Anda akan memiliki halaman berubah di situs Anda yang Anda inginkan sebagai bagian dari sitemap, menu, atau untuk dimasukkan dalam jejak breadcrumb Anda. Oleh karena itu apa yang perlu kita lakukan adalah menambahkan halaman untuk kontainer Zend_Navigation kami pada saat runtime. Contoh untuk ini akan dalam menambahkan item berita, posting blog, atau komentar halaman, dll
Dalam contoh ini saya akan menambahkan beberapa posting berita untuk Suami saya didefenisikan secara statis config. Untuk mendapatkan konfigurasi berita halaman posting saya telah menggunakan kelas yang mengembalikan array dalam format berikut:
$ PagesToAdd array = ( 0 => array ( 'Label' => 'Fake berita cerita # 5 ...', 'Modul' = 'www'>, 'Rute' => 'www-indeks', 'Action' 'view' =>, 'Controller' 'berita' =>, 'Params' => array ( 'Id' => '5-Fake-news-cerita - 5 ') ), 1 => array (/ * Lebih halaman rincian * /), );
Ketika Anda akan melihat bahwa fungsi tersebut telah kembali array dalam array yang berisi yang membentuk konfigurasi array untuk Zend_Navigation_Page_Mvc. Karena itu, dengan perulangan atas halaman Zend_Navigation array baru dapat dibuat dari array config. Hal berikutnya yang harus dilakukan sebagai bagian dari loop adalah untuk menambahkan halaman dalam posisi yang benar (alternatif halaman dapat ditambahkan dalam massal dengan menggunakan - addPages> () method).
Untuk melakukan hal ini, cari halaman yang anda ingin tambahkan sub-halaman dan cukup tambahkan halaman. Dalam hal ini saya telah menggunakan kode berikut untuk menemukan halaman saya:
$ Wadah-> findOneBy ('label', 'Latest News') -> addPage ($ halaman); keseluruhan navigasi saya inisialisasi dalam bootstrap itu sehingga terlihat seperti ini:
/ ** * Digunakan untuk penanganan navigasi atas tingkat * * @ Return Zend_Navigation * / fungsi dilindungi _initNavigation () { $ This-> bootstrap ('layout'); $ Layout = $ this getResource-> ('layout'); $ View = getView $ layout-> (); $ Config = new Zend_Config_Ini ( APPLICATION_PATH. '/ Configs / navigation.ini', APPLICATION_ENV); $ Container = Zend_Navigation baru (default $ config->); / / Sekarang tambahkan 25 laporan terakhir berita $ Berita Berita = new (); $ Halaman = $ getNavigationEntries berita-> (); foreach ($ halaman AS $ halaman) { $ Halaman Zend_Navigation_Page_Mvc = baru ($ halaman); $ Wadah-> findOneBy ('label', 'Latest News') -> addPage ($ halaman); } $ View-> navigasi ($ kontainer); }
Pada hal yang perlu ditambahkan adalah beberapa bentuk caching (menggunakan Zend_Cache mungkin;)) jika ini akan menjadi cukup mahal dengan masing-masing memuat halaman.


















































Itulah apa yang saya sedang mencari - terima kasih untuk contoh yang benar-benar jelas. Cheers. G