如何通过用户函数从表单中获取 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>';
}
}
在 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>';
}
}