在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纳入用户功能?感谢您的任何帮助!
$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>';
}
}