Typo3 Formhandler在一个页面上处理多个表单

Typo3 Formhandler在一个页面上处理多个表单,typo3,typoscript,Typo3,Typoscript,我一直使用formhandler在一个页面上创建多个表单。到目前为止,我在设置变量中完成了以下代码 plugin.Tx_Formhandler.settings { debug = 0 formValuesPrefix = formhandler singleErrorTemplate { totalWrap = <div class="error">|</div> singleWrap = <span class="messag

我一直使用formhandler在一个页面上创建多个表单。到目前为止,我在设置变量中完成了以下代码

plugin.Tx_Formhandler.settings {

  debug = 0
  formValuesPrefix = formhandler

    singleErrorTemplate {
    totalWrap = <div class="error">|</div>
    singleWrap = <span class="message">|</span>
  }
  preProcessors {
    1.class = Tx_Formhandler_PreProcessor_LoadDefaultValues
    1 {
      config.1 {
         name.defaultValue = Name
         email.defaultValue = E-Mail
      }
    }
  }
  validators {
    1.class = Validator_Default
    1.config.fieldConf {
      name {
        errorCheck.1 = required
      }
      email {
        errorCheck.1 = required
        errorCheck.2 = email
      }
    }
  }
  singleErrorTemplate {
    totalWrap = <div class="error">|</div>
    singleWrap = <span class="message">|</span>
  }
  finishers {

    # Finisher_Mail sends emails to an admin and/or the user.
    1.class = Finisher_Mail

    # Finisher_Redirect will redirect the user to another page after the form was submitted successfully.
    5.class = Finisher_Redirect
    5.config {
      redirectPage = {$formhandlerExamples.basic.contact-form.redirectPage}
    }
  }
}
plugin.Tx\u Formhandler.settings{
调试=0
formValuesPrefix=formhandler
单一错误模板{
总包裹=|
单包裹=|
}
预处理器{
1.class=Tx\u Formhandler\u预处理器\u LoadDefaultValues
1 {
配置1{
name.defaultValue=name
email.defaultValue=电子邮件
}
}
}
验证器{
1.class=验证程序\默认值
1.config.fieldConf{
名字{
errorCheck.1=必需
}
电子邮件{
errorCheck.1=必需
errorCheck.2=电子邮件
}
}
}
单一错误模板{
总包裹=|
单包裹=|
}
终结者{
#Finisher_Mail向管理员和/或用户发送电子邮件。
1.class=收信人邮件
#Finisher_Redirect将在表单成功提交后将用户重定向到另一页。
5.class=修整器重新定向
5.config{
redirectPage={$formhandlerExamples.basic.contact form.redirectPage}
}
}
}
但现在我想在我的网站上添加第二个表单。如果我只是添加第二个plugin.Tx_Formhandler.settings{}和一个新的formValuesPrefix,它就不起作用了。我只收到一个“捕获异常:未找到模板”错误

当我删除第一个窗体和第一个设置时,我的窗体正在工作


我可以用一个教程或其他东西来介绍如何在一个页面上使用formhandler添加多个表单。

我终于明白了这一点。您需要做的是使用settings.predef而不是标准设置。比如说

plugin.Tx_Formhandler.settings.predef.formhandler {
  # This name appears in the dropdown selector in plugin record
  name = Newsletter Contact
  debug = 0
  formValuesPrefix = formhandler

  singleErrorTemplate {
    totalWrap = <div class="error">|</div>
    singleWrap = <span class="message">|</span>
  }
  validators {
    1.class = Validator_Default
    1.config.fieldConf {
      name {
        errorCheck.1 = required
      }
      email {
        errorCheck.1 = required
        errorCheck.2 = email
      }
    }
  }
  singleErrorTemplate {
    totalWrap = <div class="error">|</div>
    singleWrap = <span class="message">|</span>
  }
  finishers {

    # Finisher_Mail sends emails to an admin and/or the user.
    1.class = Finisher_Mail

    # Finisher_Redirect will redirect the user to another page after the form was submitted successfully.
    5.class = Finisher_Redirect
    5.config {
      redirectPage = 8
    }
  }
}
plugin.Tx\u Formhandler.settings.predef.Formhandler{
#此名称出现在插件记录的下拉选择器中
姓名=通讯联系人
调试=0
formValuesPrefix=formhandler
单一错误模板{
总包裹=|
单包裹=|
}
验证器{
1.class=验证程序\默认值
1.config.fieldConf{
名字{
errorCheck.1=必需
}
电子邮件{
errorCheck.1=必需
errorCheck.2=电子邮件
}
}
}
单一错误模板{
总包裹=|
单包裹=|
}
终结者{
#Finisher_Mail向管理员和/或用户发送电子邮件。
1.class=收信人邮件
#Finisher_Redirect将在表单成功提交后将用户重定向到另一页。
5.class=修整器重新定向
5.config{
重定向页面=8
}
}
}
现在,您将在模块的下拉列表中找到此设置。如果您创建更多的设置,您将有更多的设置可供选择。每个表单都需要自己的设置。predef