Dinamis menambahkan halaman untuk kontainer Zend_Navigation pada saat runtime

Dengan Watkin Lloyd Steven , Kamis 7 Januari 2010 22:50

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.

Satu Respon untuk "dinamis menambahkan halaman untuk kontainer Zend_Navigation pada saat runtime"

  1. Mr Man mengatakan:

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

Tinggalkan Balasan













Panorama Tema oleh Themocracy

7 pengunjung online sekarang
6 tamu, 1 bot, 0 anggota
Max pengunjung hari ini: 13 di 11:17 UTC
Bulan ini: 26 jam 2011/07/05 00:35 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Sepanjang waktu: 130 pada 28-03-2011 10:40 UTC