проблема типоскрипта с LOAD_REGISTER и если условие для заполнения списка

То, что я пытаюсь сделать, довольно сложно, и задействовано расширение Extbase...

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

  • Плагин Extbase решает, должны ли быть отмечены определенные элементы навигации.
  • Этот плагин имеет одно действие для каждого элемента навигации.
  • Возвращаемое значение (0 или 1) от каждого действия в TS сохраняется в стеке (LOAD_REGISTER).
  • Список UID страниц создается путем проверки сохраненных значений (0,1).
  • Сертификат подлинности навигации изменяется с использованием этого списка 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). Но lackPIDslist всегда пустой (кроме 0 в конце)... Должно быть что-то не так со средней частью:

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

Эта оценка в любом случае возвращает false.

Я также пробовал использовать другую функцию if, например:

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

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


person rantanplan    schedule 29.04.2013    source источник
comment
Вы когда-нибудь понимали это, я только что спросил что-то очень похожее [здесь] (stackoverflow.com/q/40145253/5353105 ) ...   -  person webMan    schedule 22.10.2016


Ответы (1)


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

person Jo Hasenau    schedule 29.04.2013
comment
Привет, я начал без _INT, и это тоже не сработало. Также может быть проблема в том, что действия настроены как не кэшируемые в Tx_Extbase_Utility_Extension::configurePlugin? - person rantanplan; 30.04.2013