Динамички додају странице Зенд_Навигатион контејнер у рунтиме
У наставку на мој последњи пост о Зенд_Навигатион, Рута захтева за ситемап.кмл обичају контролер / акција , овај чланак је о димнамицалли додавање странице Зенд_Навигатион контејнер приликом рунтиме / Сцрипт Екецутион.
Њена све добро и добро навести ваше странице у ини или кмл фајл, али у неком тренутку ћете имати промене странице на вашем сајту које желите као део менија, Ситемап, или да буду укључени у ваш бреадцрумб траг. Дакле оно што треба да урадите је да додате странице нашим Зенд_Навигатион контејнер у рунтиме. Примери за то би било у додавању вести, блогу, или странице коментаре, итд
У овом примеру ја ћу додати неке постове вести мом статички дефинисана ини конфиг. Да бисте добили мој конфигурације вести порука страна користио сам класу која се враћа низ у следећем формату:
$ ПагесТоАдд = арраи ( 0 => арраи ( 'Лабел' => 'Лажни вест # 5 ...', 'Модул' => 'ввв', 'Пут' => 'ууу-индекс, 'Акцију' => 'Погледај', 'Контролер' => 'вести', 'Параметре' => арраи ( 'Ид' => '5-Факе-вести-прича - 5 ') ), 1 => арраи (/ * Више детаља страна * /), );
Као што ћете приметити да функција враћа низ у коме се налазе низови који чине конфиг низова за Зенд_Навигатион_Паге_Мвц. Дакле, петље преко низа нових Зенд_Навигатион странице могу бити креиране од конфиг низа. Следећа ствар коју треба урадити као део петље је да се да додате странице у исправном положају (алтернативно страницама могу се додати у расутом стању користећи -> аддПагес () метод).
Да бисте то урадили, пронађите страницу коју желите да додате под-странице на и једноставно додајте странице. У овом случају сам користио следећи код да пронађе мојој страници:
$ Контејнер-> финдОнеБи ('етикета', 'Вести') -> аддПаге ($ страна); Моји укупни навигација Иницијализација у боотстрап зато изгледа овако:
/ ** * Користи се за руковање највишег нивоа навигације * * @ Ретурн Зенд_Навигатион * / заштићени функција _инитНавигатион () { $ Тхис-> боотстрап ('распоред'); $ Распоред = $ тхис-> гетРесоурце ('распоред'); $ Виев = $ распоред-> гетВиев (); $ Цонфиг = нових Зенд_Цонфиг_Ини ( АППЛИЦАТИОН_ПАТХ. '/ Цонфигс / навигатион.ини', АППЛИЦАТИОН_ЕНВ); $ Контејнер = нових Зенд_Навигатион ($ цонфиг-> подразумевано); / / Сад додајте последњих 25 извештаја вести $ Вест = нових вести (); $ Страна = $ вести-> гетНавигатионЕнтриес (); фореацх ($ страница ас $ паге) { $ Паге = нових Зенд_Навигатион_Паге_Мвц ($ страна); $ Контејнер-> финдОнеБи ('етикета', 'Вести') -> аддПаге ($ страна); } $ Виев-> навигацију ($ контејнер); }
На ствар која треба да се дода неки облик кеширање (користећи Зенд_Цацхе вероватно;)) иначе ово ће бити прилично скупа са сваке странице оптерећења.


















































То је управо оно што сам тражио - хвала за заиста јасан пример. Цхеерс. Г
Лепо пост! Ја сам неке проблеме покретање модела класе у боотстрап. Свака појма зашто апплицатион / к-модела класе нису доступни у боотстрап? Ваш класа се зове "нови Вести () ', уместо Волео бих да додате странице навигацију тако што навигационо дрво од модела класе. Ако имате неку идеју, молим вас јавите ми! ;)
Мој модел је уредник за пост, његов тачан назив у коду је Про_Невс и покупи Аутолоадер.
Претпостављам да не користите модуле? Али, ако је то модел би требало да се зове _Невс за ЗФ да покупи по дефаулту (не користим овај систем себе).
Ја бих предложити провере обухвата пут од боотстрап метод да бисте видели да ли садржи "апплицатион / к-модела" или су ручно фајл.
Па ја користим модуле, моја лоша. Али ти се аутоматски предложити би требало да раде? Па, ја сам да копа у њу мало дубље. У овом тренутку ја користим аддПаге функцију у БасеЦонтроллерс, што заправо није перформансе пријатељски ... хехе. Хвала на одговору.
Обезбедите да ваш модул модел је правилно име _Невс (На пример) и требало би да покупи користећи се аутоматски.
Мој модел је уредник за пост, његов тачан назив у коду је Про_Невс и покупи Аутолоадер.
Претпостављам да не користите модуле? Али, ако је то модел би требало да се зове _Невс За ЗФ да покупи по дефаулту (не користим овај систем себе).
Ја бих предложити провере обухвата пут од боотстрап метод да бисте видели да ли садржи "апплицатион / к-модела" или су ручно фајл.