You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 Formframework:使用ViewHelper渲染表单时指定FormFrontend控制器

解决TYPO3表单渲染时提交目标控制器错误的问题

要让表单提交到Form扩展的FormFrontend控制器的perform动作,你需要在渲染表单时显式指定路由所需的完整参数,而不仅仅是action。以下是两种可行的实现方式:

方式一:在Fluid模板中通过overrideConfiguration覆盖配置

在使用formvh:form.render时,通过overrideConfiguration覆盖表单定义的renderingOptions,指定extensionName、pluginName、controllerName和controllerAction:

{formvh:form.render(
    formIdentifier: 'mycustomform',
    overrideConfiguration: {
        formDefinition: {
            renderingOptions: {
                extensionName: 'form',
                pluginName: 'Formframework',
                controllerName: 'FormFrontend',
                controllerAction: 'perform'
            }
        }
    }
)}

这样配置后,表单的action属性会自动生成指向tx_form_formframework的正确路由,表单提交后会由Form扩展的控制器处理,你的finisher配置也会生效。

方式二:直接在表单YAML定义中配置渲染选项

如果不需要动态修改,可以直接在mycustomform.form.yaml里的renderingOptions中指定目标控制器参数:

type: Form
identifier: mycustomform
label: '自定义表单'
renderingOptions:
  extensionName: 'form'
  pluginName: 'Formframework'
  controllerName: 'FormFrontend'
  controllerAction: 'perform'
# 表单字段配置
renderables:
  - type: Page
    identifier: page-1
    renderables:
      # 你的表单字段
# Finisher配置
finishers:
  - identifier: EmailToReceiver
    options:
      # 你的邮件配置

关键说明

TYPO3的表单路由依赖extensionName、pluginName、controllerName和controllerAction四个参数来确定处理请求的控制器。如果你的模板是在自定义扩展的插件上下文里渲染,表单会默认继承当前插件的路由参数,导致提交到自己的扩展控制器。显式覆盖这四个参数就能强制表单使用Form扩展的控制器处理提交请求。

内容的提问来源于stack exchange,提问作者Stefan Padberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:02:49