使用f:form viewhelper将Fluid-Template中的数组提交给Controller

时间:2019-01-29 13:24:38

标签: typo3 fluid extbase

我目前正在编写带有后端模块的Extbase扩展。我已经为后端模块的模板分配了一个数组。现在,我尝试使用模板中表单的输入将该数组提交回我的crontroller操作“ pageGenerator”。 这是我的控制器和模板中的代码:

控制器:

public function listAction()
{
    $array = [
        '1' => '',
        '2' => '',
        '3' => ''
    ];
    $this->view->assign('array', $array);
    $this->view->setTemplatePathAndFilename('EXT:bm_test/Resources/Private/Templates/template.html');

}
public function pageGeneratorAction(array $array=null){}

流体模板:

 <div align="center">
  <f:form method="post" controller="DomainModel" action="pageGenerator" 
     name="array" object="{array}" >
    <input type="text" name="array[1]">
    <input type="text" name="array[2]">
    <input type="text" name="array[3]"> 
    <f:form.submit value="Submit" />
</f:form>
 </div>

问题是无论我在文本字段中键入什么内容,数组都为null。当我从pageGenerator动作中删除“ = null”时,出现以下错误:

Too few arguments to function Bmt\BmTest\Controller\DomainModelController::pageGeneratorAction(), 0 passed and exactly 1 expected

因此,似乎未提交数组。 有人知道我在这里做错什么吗?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您是否尝试在setTemplatePathAndFilename之后插入assign变量? 因为在typo3中,如果模板名称与操作名称不同,则需要首先将其初始化,然后返回带有已分配变量的视图 例子

$this->view->setTemplatePathAndFilename('EXT:bm_test/Resources/Private/Templates/template.html');
$this->view->assign('array', $array);
return $this->view->render();