Динамички додају странице Зенд_Навигатион контејнер у рунтиме

Би Стивен Лојд Ваткин , четвртак 7. јануар 2010 10:50 ам

У наставку на мој последњи пост о Зенд_Навигатион, Рута захтева за ситемап.кмл обичају контролер / акција , овај чланак је о димнамицалли додавање странице Зенд_Навигатион контејнер приликом рунтиме / Сцрипт Екецутион.

Њена све добро и добро навести ваше странице у ини или кмл фајл, али у неком тренутку ћете имати промене странице на вашем сајту које желите као део менија, Ситемап, или да буду укључени у ваш бреадцрумб траг. Дакле оно што треба да урадите је да додате странице нашим Зенд_Навигатион контејнер у рунтиме. Примери за то би било у додавању вести, блогу, или странице коментаре, итд

У овом примеру ја ћу додати неке постове вести мом статички дефинисана ини конфиг. Да бисте добили мој конфигурације вести порука страна користио сам класу која се враћа низ у следећем формату:

  $ ПагесТоАдд = арраи (
   0 =>
     арраи (
       'Лабел' => 'Лажни вест # 5 ...',
       'Модул' => 'ввв',
       'Пут' => 'ууу-индекс,
       'Акцију' => 'Погледај',
       'Контролер' => 'вести',
       'Параметре' => арраи (
           'Ид' => '5-Факе-вести-прича - 5 ')
     ),
   1 =>
     арраи (/ * Више детаља страна * /),
  ); 

Као што ћете приметити да функција враћа низ у коме се налазе низови који чине конфиг низова за Зенд_Навигатион_Паге_Мвц. Дакле, петље преко низа нових Зенд_Навигатион странице могу бити креиране од конфиг низа. Следећа ствар коју треба урадити као део петље је да се да додате странице у исправном положају (алтернативно страницама могу се додати у расутом стању користећи -> аддПагес () метод).

Да бисте то урадили, пронађите страницу коју желите да додате под-странице на и једноставно додајте странице. У овом случају сам користио следећи код да пронађе мојој страници:

  $ Контејнер-> финдОнеБи ('етикета', 'Вести') -> аддПаге ($ страна); 

Моји укупни навигација Иницијализација у боотстрап зато изгледа овако:

  / **
      * Користи се за руковање највишег нивоа навигације
      *
      * @ Ретурн Зенд_Навигатион
      * /
     заштићени функција _инитНавигатион ()
     {
         $ Тхис-> боотстрап ('распоред');
         $ Распоред = $ тхис-> гетРесоурце ('распоред');
         $ Виев = $ распоред-> гетВиев ();
         $ Цонфиг = нових Зенд_Цонфиг_Ини (
             АППЛИЦАТИОН_ПАТХ.  '/ Цонфигс / навигатион.ини', АППЛИЦАТИОН_ЕНВ);

         $ Контејнер = нових Зенд_Навигатион ($ цонфиг-> подразумевано);
         / / Сад додајте последњих 25 извештаја вести
         $ Вест = нових вести ();
         $ Страна = $ вести-> гетНавигатионЕнтриес ();
         фореацх ($ страница ас $ паге) {
        	 $ Паге = нових Зенд_Навигатион_Паге_Мвц ($ страна);
        	 $ Контејнер-> финдОнеБи ('етикета', 'Вести') -> аддПаге ($ страна);
         }
         $ Виев-> навигацију ($ контејнер);
     } 

На ствар која треба да се дода неки облик кеширање (користећи Зенд_Цацхе вероватно;)) иначе ово ће бити прилично скупа са сваке странице оптерећења.

6 Респонсес то "Динамички додају странице Зенд_Навигатион контејнер приликом рунтиме"

  1. Мр човек каже:

    То је управо оно што сам тражио - хвала за заиста јасан пример. Цхеерс. Г

  2. А387 каже:

    Лепо пост! Ја сам неке проблеме покретање модела класе у боотстрап. Свака појма зашто апплицатион / к-модела класе нису доступни у боотстрап? Ваш класа се зове "нови Вести () ', уместо Волео бих да додате странице навигацију тако што навигационо дрво од модела класе. Ако имате неку идеју, молим вас јавите ми! ;)

    • Мој модел је уредник за пост, његов тачан назив у коду је Про_Невс и покупи Аутолоадер.

      Претпостављам да не користите модуле? Али, ако је то модел би требало да се зове _Невс за ЗФ да покупи по дефаулту (не користим овај систем себе).

      Ја бих предложити провере обухвата пут од боотстрап метод да бисте видели да ли садржи "апплицатион / к-модела" или су ручно фајл.

      • А387 каже:

        Па ја користим модуле, моја лоша. Али ти се аутоматски предложити би требало да раде? Па, ја сам да копа у њу мало дубље. У овом тренутку ја користим аддПаге функцију у БасеЦонтроллерс, што заправо није перформансе пријатељски ... хехе. Хвала на одговору.

  3. Мој модел је уредник за пост, његов тачан назив у коду је Про_Невс и покупи Аутолоадер.

    Претпостављам да не користите модуле? Али, ако је то модел би требало да се зове _Невс За ЗФ да покупи по дефаулту (не користим овај систем себе).

    Ја бих предложити провере обухвата пут од боотстрап метод да бисте видели да ли садржи "апплицатион / к-модела" или су ручно фајл.

Допуст један Одговор













Панорама Тхеме би Тхемоцраци

9 посетилаца оффлине
3 гостију, 6 робота, није видљива 0 цланова
Макс посетилаца данас: 11 у 12:09 пм УТЦ
Овог месеца: 52 у 18-06-2011 03:11 пм УТЦ
Ове године: 130 у 28-03-2011 10:40 пм УТЦ
Алл Тиме: 130 у 28-03-2011 10:40 пм УТЦ