【问题标题】:Submit array from Fluid-Template to Controller with f:form viewhelper使用 f:form viewhelper 将数组从 Fluid-Template 提交到 Controller
【发布时间】:2019-01-29 13:24:38
【问题描述】:

我目前正在编写一个带有后端模块的 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>

问题是无论我在文本字段中输入什么,数组都是空的。当我从 pageGenerator 操作中删除“=null”时,我得到以下错误:

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

所以看起来数组没有提交。 有谁知道我在这里做错了什么?提前感谢您的帮助。

【问题讨论】:

    标签: typo3 fluid extbase


    【解决方案1】:

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

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

    【讨论】:

    • 我刚刚尝试过,但遗憾的是它没有用。我还通过确认模板实际接收到数组来缩小问题范围。我可以从模板中访问它。
    猜你喜欢
    • 1970-01-01
    • 2017-01-10
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多