1

我正在尝试做的事情非常复杂,并且涉及到 Extbase 扩展......

一步一步,我正在尝试做的事情:

  • Extbase 插件决定是否应标记某些导航元素。
  • 这个插件对每个导航元素都有一个操作。
  • TS 中每个动作的返回值(0 或 1)存储在堆栈中(LOAD_REGISTER)。
  • 通过检查存储的值 (0,1) 来构建页面 UID 列表。
  • 使用此页面 UID 列表修改导航 COA。

这是我正在使用的打字稿代码:

// 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
  }
}

在任何情况下,此评估都会返回false 。

我还尝试了不同的if函数,例如:

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

但这并不能解决问题。

4

1 回答 1

0

只是忽略了其他寄存器也在使用 USER_INT

于 2013-04-29T21:25:59.807 回答