簡體   English   中英

Typo3:將 USER_INT 與 HMENU 的 special.value 一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM