1

私がやろうとしていることは非常に複雑で、Extbase 拡張機能が関係しています...

段階的に、私がやろうとしていること:

  • Extbase プラグインは、特定のナビゲーション要素をマークする必要があるかどうかを決定します。
  • このプラグインには、ナビゲーション要素ごとに 1 つのアクションがあります。
  • TS の各アクションからの戻り値 (0 または 1) は、スタック (LOAD_REGISTER) に格納されます。
  • ページ UID のリストは、格納されている値 (0,1) と照合して作成されます。
  • ナビゲーション COA は、このページ UID のリストを使用して変更されます。

私が使用しているタイポスクリプトコードは次のとおりです。

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