如何通过用户函数从表单中获取 post 变量

How to get the post vars from a form via user function

在 Typo3 网站上集成了一个表单。该操作应路由到错字用户功能。

这是我到目前为止尝试过的:

流体形式代码(节选):

<form action="{f:cObject(typoscriptObjectPath: 'lib.mynlreg')}" method="post">
  <input type="text" name="email" placeholder="Ihre E-Mail-Adresse">
  <input type="submit" name="send" value="Jetzt registrieren" class="submit" />
</form>

打字库:

lib.mynlreg = USER_INT
lib.mynlreg {
   userFunc = Vendor\Extension\myClass->myFunction
}

和 class:

class myClass {

  public function myFunction($content, $conf) {
      $arguments = $this->request->getArguments();
      $formEmail = $arguments['email'];
      return '<div>' . $formEmail . '</div>';
  }

}

我希望得到表单字段的内容"email",但是提交页面后抛出错误。问题是,如何将 post 变量放入用户函数中?感谢您的帮助!

$this->request 在 userFunc 中不可用。正如 gautamsinh mori 所说,您应该使用 \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email');,但是我不确定您是否理解 f:cObject ViewHelper 的作用。

使用此代码,您在提交表单之前的 HTML 将是:

<form action="<div></div>" method="post">
  <input type="text" name="email" placeholder="Ihre E-Mail-Adresse">
  <input type="submit" name="send" value="Jetzt registrieren" class="submit" />
</form>

提交后您的 HTML 将是:

<form action="<div>filledInEmail</div>" method="post">
  <input type="text" name="email" placeholder="Ihre E-Mail-Adresse">
  <input type="submit" name="send" value="Jetzt registrieren" class="submit" />
</form>

我建议为此做一个扩展,但如果你真的 want/need 这样做,我想你正在寻找的是这样的:

<f:cObject typoscriptObjectPath="lib.mynlreg" />
<form action="{uri.page(addQueryString: 1)}" method="post">
  <input type="text" name="email" placeholder="Ihre E-Mail-Adresse">
  <input type="submit" name="send" value="Jetzt registrieren" class="submit" />
</form>

这将创建对当前页面有操作的表单(包括任何查询字符串)。如果表单尚未提交,则必须将 userFunc 更改为 return 空字符串。类似于:

class myClass {
    public function myFunction($content, $conf) {
        $formEmail = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email');
        if (empty($formEmail)) {
            return '';
        }
        return '<div>' . $formEmail . '</div>';
    }
}