我使用TYPO3 8 LTS,我想扩展表格。
现在我正在尝试在我的表单中添加一个条件,跳过所有其他步骤并运行我的终结器。在文档中写道,您必须使用afterInitializeCurrentPage函数:
/**
* @param FormRuntime $formRuntime
* @param CompositeRenderableInterface $currentPage
* @param null|CompositeRenderableInterface $lastPage
* @param mixed $requestArguments submitted value of the element *before post processing*
* @return CompositeRenderableInterface
*/
public function afterInitializeCurrentPage(
FormRuntime $formRuntime,
CompositeRenderableInterface $currentPage,
CompositeRenderableInterface $lastPage = null,
array $requestArguments = []
): CompositeRenderableInterface {
if ($requestArguments['personalized'] === '0') {
// code here ...
}
return $currentPage;
}
我的问题是我不知道我是如何执行这个功能的终结者的。
我希望有人可以给我一些提示或其他东西..
[编辑]
下一个问题是,如果我使用afterInitializeCurrentPage方法,我的网站中的其他表单会出现异常:
Argument 2 passed to VENDOR\YourNamespace\YourClass::afterInitializeCurrentPage() must implement interface TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface, null given, called in [..]/typo3/sysext/form/Classes/Domain/Runtime/FormRuntime.php on line 254
非常感谢!
答案 0 :(得分:0)
您可以像下面一样调用终结者课程。
您需要在ext_localconf.php
文件中添加以下行。像这样
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterInitializeCurrentPage'][]
= \VENDOR\YourNamespace\Hooks\YourClass::class;
在路径Classes / Hooks / YourClass.php。
之后添加如下功能<?php
namespace \VENDOR\YourNamespace\Hooks;
class YourClass
{
/**
* @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage
* @param null|\TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage
* @param mixed $elementValue submitted value of the element *before post processing*
* @return \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface
*/
public function afterInitializeCurrentPage(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage = null, array $requestArguments = []): CompositeRenderableInterface
{
return $currentPage;
}
}