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 方法以编程方式设置该值。
我只是想在我的 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 方法以编程方式设置该值。