TYPO3 v12 method="get"表单仅跳转至默认action问题求助
TYPO3 GET表单无法跳转至指定Action的问题解决
问题场景
插件包含list和filter两个Action,尝试通过GET表单提交到filterAction:
<f:form action="filter" name="filter-form" method="get" class="filter-form"> </f:form>
- POST方式提交时功能正常,但GET方式无法跳转到
filterAction - 渲染后的表单Action URL看起来正确,包含
tx_extension_plugin[action]=filter参数 - 表单自动生成了隐藏字段:
<input type="hidden" name="tx_extension_plugin[__referrer][@action]" value="list">
问题原因
TYPO3的f:form视图助手默认会添加__referrer隐藏字段,用于记录当前页面的上下文(当前页面加载时的Action为list)。当使用GET提交时,TYPO3路由会优先读取__referrer[@action]的值,覆盖URL中携带的action参数,导致请求被路由到list而非filter。
解决办法
1. 禁用自动生成的Referrer字段
在f:form标签中添加noReferrer="1"属性,阻止视图助手生成__referrer相关隐藏字段:
<f:form action="filter" name="filter-form" method="get" class="filter-form" noReferrer="1"> <!-- 你的表单字段 --> </f:form>
2. 手动指定Action参数(可选)
如果禁用Referrer后仍有问题,可以手动添加明确的Action和Controller隐藏字段,确保路由优先级:
<f:form action="filter" name="filter-form" method="get" class="filter-form" noReferrer="1"> <f:hidden name="tx_extension_plugin[action]" value="filter" /> <f:hidden name="tx_extension_plugin[controller]" value="Filter" /> <!-- 你的表单字段 --> </f:form>
3. 验证插件路由配置
确认插件配置中已将filterAction加入允许列表(在ext_localconf.php中):
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( 'YourVendor.YourExtension', 'PluginName', [ 'Filter' => 'list,filter' // 确保filter在允许的Action列表内 ], // 若filter需要非缓存处理,可添加到第二数组 [ 'Filter' => 'filter' ] );
内容的提问来源于stack exchange,提问作者JonathanWdl
相关产品推荐
相关产品推荐

