[英]Typo3: Use USER_INT with HMENU's special.value
我只是想在我的page.typoscript
文件中使用 PHP 代碼以編程方式計算一個值。 這就是我所做的:
dataProcessing {
1010 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
1010 {
levels = 2
special = directory
special.value = USER_INT
special.value {
userFunc = Vendor\Extension\Utils\NavigationBarUtils->getPlatformRootPid
}
as = menuMain
}
...
}
調用的方法是這個:
public function getPlatformRootPid(): int
{
return 1;
}
當我加載任何頁面時, menuMain
為空。 命名空間是正確的。 此外,我已經使用這樣的方法來計算同一個page.typoscript
文件中的一些其他值,並且它們可以工作。
將該值設置為special.value = 1
,它會按預期工作。
它是用MenuProcessor的(即HMENU)問題special.value
和USER_INT? 他們不知何故不兼容? 還是我在這里錯過了其他東西?
非常感謝您!
我想你錯過了類型。
special.value
需要一個值,該值可能會被.stdWrap
函數修改。
您嘗試將屬性修改為對象,這是行不通的。
您分配了值(字符串) USER_INT
和不存在的 stdWrap 函數userFunc
。
如果你想使用一個對象作為一個值,你需要使用.cObject
。 所以你的解決方案可能是:
1010 {
levels = 2
special = directory
special.value.cObject = USER_INT
special.value.cObject {
userFunc = Vendor\Extension\Utils\NavigationBarUtils->getPlatformRootPid
}
as = menuMain
}
最后,我想出了一種方法來做到這一點:
1010 {
levels = 2
special = directory
special.value.postUserFunc = Vendor\Extension\Utils\NavigationBarUtils->getPlatformRootPid
as = menuMain
}
實際上,它完成了我想要的操作,通過調用 PHP 方法以編程方式設置該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.