如何通过用户功能从表单中获取post vars

问题描述 投票:0回答:1

在Typo3网站上整合了一个表格。应该将操作路由到typoscript用户功能。

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

流体形式代码(摘录):

<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>

typoscript lib:

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

和班级:

class myClass {

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

}

我希望获得表单字段“email”的内容,但在提交页面后会抛出错误。问题是,如何将post vars纳入用户功能?感谢您的任何帮助!

forms typo3 typoscript
1个回答
0
投票

$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>

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

<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以返回空字符串。就像是:

class myClass {
    public function myFunction($content, $conf) {
        $formEmail = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email');
        if (empty($formEmail)) {
            return '';
        }
        return '<div>' . $formEmail . '</div>';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.