Url 中的 TYPO3 Extbase 参数被忽略。没有调用任何动作
TYPO3 Extbase Parameters in Url get ignored. No action is called
我正在编写一个检查浏览器版本的扩展程序,如果不支持该版本,则会显示提示。
我正在使用打字错误条件执行此操作,到目前为止效果很好。但在提示中是 link 表示忽略。 link 应该在控制器 "BrowserCheck" 中调用我的操作 "setSessionParameters"。如果单击 link,则会调用正确的 url,但会显示与之前相同的输出(提示)。该动作被完全忽略。我试图加入一个不存在的动作,但甚至没有调用异常,这对我来说意味着:没有检查 ext_localconf 中是否允许问题,也没有在控制器中检查。
我认为 typoscript 配置可能是个问题,但我找不到解决方案。谁能帮忙?
请在下面查看我的代码
ext_localconf.php:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'VENDOR.' . $extensionKey,
'browsercheck',
[
'BrowserCheck' => 'setSessionParameter',
],
[
'BrowserCheck' => 'setSessionParameter',
]
);
page.typoscript:
page = PAGE
[session('wcobrowsercheck') == "ignore" || checkInternetExplorer()]
page{
//normal setup
}
[ELSE]
// called setup for hint-case
page >
page = PAGE
page{
typeNum = 0
shortcutIcon = {$files.favicon.path}
10 = FLUIDTEMPLATE
10 {
templateRootPaths {
0 = EXT:my_extension/Resources/Private/Templates/BrowserCheck
}
layoutRootPaths {
0 = EXT:my_extension/Resources/Private/Layouts/BrowserCheck
}
templateName = MainPage
}
includeCSS {
...
}
}
[END]
link 在模板中调用:
<f:link.action controller="BrowserCheck" action="setSessionParameters" extensionName="my_extension" pluginName="browsercheck" arguments="{ignore: 'true'}"> ignore </f:link.action>
我发现您的设置有 2 个问题。
- 您定义了 PAGE 对象两次。第二次擦除所有以前的配置
- 我看不到你在页面上放置了插件。
由于您的问题针对的是第二个问题,如果您希望该插件随处可用,我建议您通过打字错误将插件添加到页面。
page = PAGE
// ...
page.999 < tt_content.list.20.extkey_pluginname
或者您使用放置在页面上的插件作为内容元素。两者都会起作用。但是在当前设置下您无法调用该插件,因为它不在页面上。
我正在编写一个检查浏览器版本的扩展程序,如果不支持该版本,则会显示提示。 我正在使用打字错误条件执行此操作,到目前为止效果很好。但在提示中是 link 表示忽略。 link 应该在控制器 "BrowserCheck" 中调用我的操作 "setSessionParameters"。如果单击 link,则会调用正确的 url,但会显示与之前相同的输出(提示)。该动作被完全忽略。我试图加入一个不存在的动作,但甚至没有调用异常,这对我来说意味着:没有检查 ext_localconf 中是否允许问题,也没有在控制器中检查。 我认为 typoscript 配置可能是个问题,但我找不到解决方案。谁能帮忙? 请在下面查看我的代码
ext_localconf.php:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'VENDOR.' . $extensionKey,
'browsercheck',
[
'BrowserCheck' => 'setSessionParameter',
],
[
'BrowserCheck' => 'setSessionParameter',
]
);
page.typoscript:
page = PAGE
[session('wcobrowsercheck') == "ignore" || checkInternetExplorer()]
page{
//normal setup
}
[ELSE]
// called setup for hint-case
page >
page = PAGE
page{
typeNum = 0
shortcutIcon = {$files.favicon.path}
10 = FLUIDTEMPLATE
10 {
templateRootPaths {
0 = EXT:my_extension/Resources/Private/Templates/BrowserCheck
}
layoutRootPaths {
0 = EXT:my_extension/Resources/Private/Layouts/BrowserCheck
}
templateName = MainPage
}
includeCSS {
...
}
}
[END]
link 在模板中调用:
<f:link.action controller="BrowserCheck" action="setSessionParameters" extensionName="my_extension" pluginName="browsercheck" arguments="{ignore: 'true'}"> ignore </f:link.action>
我发现您的设置有 2 个问题。
- 您定义了 PAGE 对象两次。第二次擦除所有以前的配置
- 我看不到你在页面上放置了插件。
由于您的问题针对的是第二个问题,如果您希望该插件随处可用,我建议您通过打字错误将插件添加到页面。
page = PAGE
// ...
page.999 < tt_content.list.20.extkey_pluginname
或者您使用放置在页面上的插件作为内容元素。两者都会起作用。但是在当前设置下您无法调用该插件,因为它不在页面上。