私がやろうとしていることは非常に複雑で、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
}
}
しかし、これでは問題は解決しません。