2013-04-29 2 views
1

Что я пытаюсь сделать, это довольно сложный и расширение Extbase участвует ...TypoScript проблема с LOAD_REGISTER и если условие, чтобы заполнить список

шаг за шагом, что я пытаюсь сделать:

  • Плагин Extbase решает, если определенные элементы навигации должны быть отмечены.
  • Этот плагин имеет одно действие для каждого элемента навигации.
  • Возвращаемое значение (0 или 1) от каждого действия в TS хранится в стеке (LOAD_REGISTER).
  • Список UID-страниц страницы создается путем проверки на хранящиеся значения (0,1).
  • Навигационный COA изменяется с использованием этого списка UID.

Вот код TypoScript Я использую:

// load information, if pages lack info, into register 
10 = LOAD_REGISTER 
10 { 
    lacksAnfahrt { 
    cObject = USER_INT 
    cObject { 
     userFunc = tx_extbase_core_bootstrap->run 
     pluginName = Pa_klinik_data_edit 
     extensionName = Hplusinfo 
     controller = SpitalInfoPA 
     switchableControllerActions { 
     SpitalInfoPA { 
      1 = completeAnfahrt 
     } 
     } 
    } 
    } 

    lacksAktivitaeten < .lacksAnfahrt 
    lacksAktivitaeten.cObject.switchableControllerActions.SpitalInfoPA.1 = completeAktivitaeten 

    lacksBildergalerie < .lacksAnfahrt 
    lacksBildergalerie.cObject.switchableControllerActions.SpitalInfoPA.1 = completeBildergalerie 

    // build a list of PIDs that are going to be marked in navigation 
    lackPIDs.cObject = COA 
    lackPIDs.cObject { 
    10 = TEXT 
    10 { 
     value = {$config.PIDLists.anfahrt}, 
     if { 
     value = 1 
     equals.data = register:lacksAnfahrt 
     } 
    } 

    20 < .10 
    20.value = {$config.PIDLists.bildergalerie}, 
    20.if.equals.data = register:lacksBildergalerie 

    30 < .10 
    30.value = {$config.PIDLists.aktivitaeten}, 
    30.if.equals.data = register:lacksAktivitaeten 

    // don't let the comma separated list end with a comma 
    99 = TEXT 
    99.value = 0 
    } // lackPIDs 
} // REGISTER 

// mark incomplete pages with a red exclamation mark 
20 { // = HMENU 
    1 { // = TMENU 
    NO { // = 1 
     stdWrap.wrap = |<span class="warning lacksInfo">!</span> 
     stdWrap.wrap.if { 
     value.data = register:lackPIDs 
     isInList.field = uid 
     } 
    } 
    } 
} 

Если я распечатать register:lacksBildergalerie и все остальные, их значения являются правильными (0 или 1). Но lackPIDs список всегда пуст (кроме 0 в конце) ... Там должно быть что-то не так с средней части:

10 { 
    value = {$nav.PIDLists.anfahrt}, 
    if { 
    value = 1 
    equals.data = register:lacksAnfahrt 
    } 
} 

Эта оценка швов вернуть ложные в любом случае.

Я также попытался с различными если функции, как:

10 { 
    value = {$nav.PIDLists.anfahrt}, 
    if { 
    isTrue.data = register:lacksAnfahrt 
    } 
} 

Но это не решает проблему.

+0

вы когда-нибудь понял это, я просто спросил что-то очень похожее [здесь] (http://stackoverflow.com/q/40145253/5353105). .. – webMan

ответ

0

Просто забывают, что другие регистры используют USER_INT, а

+1

Привет, я начал без _INT, и это не сработало. Также может быть проблема, что действия настроены как не кэшируемые в Tx_Extbase_Utility_Extension :: configurePlugin? – rantanplan

Смежные вопросы