Dynaamisesti lisätä sivuja Zend_Navigation pakkauksessa runtime
Vuonna jatkoa minun viime post about Zend_Navigation, Route pyynnöt sitemap.xml mukautettuja ohjain / toiminta , tämä viesti on noin dymnamically lisätä sivuja Zend_Navigation kontin ajon / suorituksen.
Sen kaikki hyvin ja hyvä täsmentää sivuillesi ini tai xml -tiedoston, mutta jossain vaiheessa olet menossa on muuttaa sivuston sivut, jotka haluat osana valikon, sivustokartta, tai kuulua oman alasivun. Siksi meidän täytyy tehdä, on lisätä sivujen Zend_Navigation kontin ajon aikana. Esimerkkejä tästä olisi lisätä uutisia, blogitekstejä tai sivun kommentteja jne.
Tässä esimerkissä aion lisätä joitakin uutisia virkaa minun staattisesti määrätty ini config. Saan uutiset postitse sivu kokoonpanoissa olen käyttänyt luokka, joka palauttaa matriisin seuraavassa muodossa:
$ PagesToAdd = array ( 0 => array ( 'Etiketti' => 'Fake uutinen # 5 ...', 'Moduuli' => 'www' "Reitti" => www-indeksi ", 'Toimilla' => 'Näytä', 'Rekisterinpitäjällä' => 'uutiset', "Params '=> array ( 'Id' => "5-Fake-news-tarina - 5) ), 1 => array (/ * Lisää sivun tiedot * /) );
Kuten huomaat, että toiminta on palautunut array jotka sisältyvät taulukot, jotka muodostavat config matriisia varten Zend_Navigation_Page_Mvc. Sen vuoksi, silmukoiden yli joukon uusia Zend_Navigation sivuja voidaan luoda config jono. Seuraava asia tehdä osana silmukan on lisätä sivujen oikeassa asennossa (vaihtoehtoisesti sivut voidaan lisätä irtotavarana käyttäen -> addPages ()-metodi).
Voit tehdä tämän, etsi sivun haluat lisätä alasivuja ja yksinkertaisesti lisätä sivuja. Tässä tapauksessa olen käyttänyt seuraava koodi löydä sivuilta:
$ Kontti-> findOneBy ("merkki", "Uutiset") -> addPage ($ sivu); Kaiken kaikkiaan olen navigointi alustus on bootstrap siis näyttää tältä:
/ ** * Käsittelyyn käytetyt huipputason suunnistus * * @ Return Zend_Navigation * / suojatun toiminnon _initNavigation () { $ This-> bootstrap (layout); $ Layout = $ this-> getResource (layout); $ View = $ layout-> getView (); $ Config = uusi Zend_Config_Ini ( APPLICATION_PATH. "/ Configs / navigation.ini", APPLICATION_ENV); $ Kontti = uusi Zend_Navigation ($ config-> oletus); / / Nyt lisätään viimeisen 25 uutisraporttien $ Uutinen = uusi News (); $ Sivut = $ uutiset-> getNavigationEntries (); foreach ($ sivut $ sivu) { $ Sivu = uusi Zend_Navigation_Page_Mvc ($ sivu); $ Kontti-> findOneBy ("merkki", "Uutiset") -> addPage ($ sivu); } $ View-> navigointi ($ kontti); }
On asia, joka on lisättävä jonkinlaista välimuistiin (käyttäen Zend_Cache oletettavasti;)) muuten tämä tulee olemaan melko kallista jokaisen sivun lataus.


















































Se on vain mitä olin etsimässä - kiitos todella selkeä esimerkki. Kippis. G
Nice post! Olen joitakin ongelmia aloittamista malli luokan bootstrap. Kaikki hajuakaan miksi hakemus / malli luokat eivät ole käytettävissä bootstrap? Sinun luokka on nimeltään "uusi News ()", vaan haluaisin lisätä navigointisivut saada navigointi puusta malli luokan. Jos sinulla on idea, kerro minulle! ;)
Oma malli on muokattu virkaan, sen oikea nimi koodi Pro_News ja poimima AUTOLOADER.
Arvailla et käytä moduuleita? Mutta jos niin malli olisi nimeltään _News ZF poimia oletuksena (en käytä tätä järjestelmää itse).
I'd ehdottaa tarkkailun kuuluvat polun irti bootstrap-menetelmää nähdä, jos se sisältää "application / malleja" tai sisältävät tiedoston manuaalisesti.
No käytän moduulien paha. Mutta te ehdottaa automaattista pitäisi toimia? No, olen kaivaa se vähän syvemmälle. Tällä hetkellä käytän addPage toimintoa BaseControllers, joka ei oikeastaan suorituskyky ystävällinen ... hehe. Kiitos vastauksesta.
Varmista, että moduuli malli on nimetty oikein _News (Esimerkiksi) ja se pitäisi poimia käyttämällä automaattista.