Dinamikament żid paġni li kontenitur Zend_Navigation fil runtime

Permezz Watkin Lloyd Steven , il-Ħamis 7 Jannar, 2010 22:50

Fil-kontinwazzjoni fuq aħħar post tiegħi dwar Zend_Navigation, talbiet Rotta għall sitemap.xml lill-kontrollur tad-dwana / azzjoni , din il-kariga huwa ta 'madwar dymnamically żżid paġni għal kontenitur Zend_Navigation fi / eżekuzzjoni iskrittura runtime.

Tagħha kollha sew u tajjeb li tispeċifika paġni tiegħek fi ini jew xml fajl iżda f'xi punt int se jkollhom paġni li qed jinbidlu fis-sit tiegħek li inti tixtieq bħala parti ta 'menu, sitemap, jew biex tiġi inkluża fl-traċċa Breadcrumb tiegħek. Għalhekk dak li rridu nagħmlu hu li żżid paġni li Zend_Navigation kontenitur tagħna fil runtime. Eżempji ta 'dan ikun fl-aħbarijiet jingħaddu l-oġġetti, blog postijiet, jew kummenti paġna, eċċ

F'dan l-eżempju jien ser żżid xi postijiet aħbarijiet li ini statikament definiti tiegħi konfigurazzjoni. Biex tikseb konfigurazzjonijiet aħbarijiet tiegħi paġna post stajt użati klassi li tidħol lura l-firxa fil-format li ġej:

  $ PagesToAdd = array (
   0 =>
     array (
       "Tikketta" => "aħbar Foloz istorja # 5 ...',
       "Modulu" = "www">,
       "Route" => "www-indiċi",
       "Azzjoni" "dawl" =>,
       "Kontrollur" "aħbarijiet" =>,
       "Params" => array (
           "Id" => "5-Foloz-aħbarijiet-istorja - 5 ')
     ),
   1 =>
     array (/ * Aktar paġna tad-dettalji * /),
  ); 

Kif tkun taf avviż li l-funzjoni ġab lura firxa li fiha jinsabu arrays li jagħmlu l-konfigurazzjoni matriċi għall Zend_Navigation_Page_Mvc. Għalhekk, billi looping fuq il-paġni firxa Zend_Navigation ġodda jistgħu jinħolqu mill-firxa konfigurazzjoni. Il-ħaġa li tagħmel bħala parti mill-linja huwa li li jżidu l-paġni fil-pożizzjoni korretta (alternattivament paġni jistgħu jiġu miżjuda fi kwantitajiet kbar bl-użu - addPages> () metodu).

Biex tagħmel dan, issib il-paġna li tixtieq iżżid is-sub-paġni li u sempliċiment żid il-paġni. F'dan il-każ I għandhom jintużaw il-kodiċi li ġejjin biex isibu paġna tiegħi:

  ("Latest News" "tikketta",) $ kontenitur-> findOneBy -> addPage ($ paġna); 

globali ta 'navigazzjoni tiegħi inizjalizzazzjoni fil-bootstrap għalhekk jistenna bħal dan:

  / **
      * Użati għat-trattament ta 'livell għoli tan-navigazzjoni
      *
      Zend_Navigation * lura @
      * /
     protetti funzjoni _initNavigation ()
     {
         $ Dan il-> bootstrap ("tqassim");
         $ Tqassim = $ dan getResource-> ("tqassim");
         $ Ħsieb = $ getView tqassim-> ();
         $ Konfigurazzjoni = Zend_Config_Ini ġodda (
             APPLICATION_PATH.  "/ Configs / navigation.ini", APPLICATION_ENV);

         $ Kontenitur = Zend_Navigation ġodda ($ default konfigurazzjoni->);
         / / Issa żid l-aħħar rapporti aħbarijiet 25
         $ Aħbarijiet = Aħbarijiet ġodda ();
         $ Paġni = $ getNavigationEntries aħbarijiet> ();
         foreach ($ paġni AS $ paġna) {
        	 $ Paġna = Zend_Navigation_Page_Mvc ġodda ($ paġna);
        	 ("Latest News" "tikketta",) $ kontenitur-> findOneBy -> addPage ($ paġna);
         }
         $ View> navigazzjoni ($ kontenitur);
     } 

Fuq ħaġa li teħtieġ li tiġi miżjuda xi forma ta 'caching (bl-użu Zend_Cache presumibbilment;)) inkella dan ikun ser jiġi pjuttost għoli ma 'kull tagħbija paġna.

5 Responses to "Dinamikament żżid paġni li kontenitur Zend_Navigation fil runtime"

  1. Is-Sur Man says:

    That's biss dak i kienet qed tfittex għal - grazzi għall eżempju verament ċara. Cheers. G

  2. A387 says:

    Nizza post! Stajt xi trouble bidu għal klassi mudell fl-bootstrap. Kull clue għaliex / mudell klassijiet applikazzjoni ma jkunux disponibbli mill-bootstrap? "Aħbarijiet ġodda ()" klassi tiegħek huwa mitlub, minflok nixtieq li jżidu l-paġni ta 'navigazzjoni billi jkollna siġra tan-navigazzjoni minn klassi mudell. Jekk inti għandek idea, jekk jogħġbok tgħarrafni! ;)

    • mudell tiegħi kien editjat għall-kariga, isem korrett tiegħu fil-kodiċi huwa Pro_News u telgħet mill-Autoloader.

      Guessing int ma jintużaw il-moduli? Imma jekk iva mudell tiegħek għandu jissejjaħ _News għal ZF li jtellgħu fil-kontumaċja (I ma jużawx din is-sistema myself).

      I'd jissuġġerixxu-iċċekkjar tal-passaġġ jinkludi mill-metodu bootstrap tiegħek biex tara jekk fih "applikazzjoni / mudelli" jew jinkludu il-fajl manwalment.

      • A387 says:

        Well I tuża moduli, bad tiegħi. Imma inti tissuġġerixxi autoloading għandhom jaħdmu? Well, stajt biex ħaffer hija daqsxejn aktar profonda. Fil-mument I tuża l-funzjoni addPage fil-BaseControllers, li mhuwiex verament prestazzjoni faċli ... hehe. Grazzi għat-tweġiba tiegħek.

Leave a Reply













Tema Panorama minn Themocracy

6 viżitaturi online issa
2 mistednin, 4 bots, 0 membri
viżitaturi llum Max: 16 fil 12:39 UTC
Dan ix-xahar: 26 fil 2011/07/05 12:35 UTC
Din is-sena: pm UTC 130 fil 28-03-2011 10:40
Il-ħin kollu: pm UTC 130 fil 28-03-2011 10:40