TYPO3关系查询 - 关系流体渲染

时间:2014-12-23 22:28:43

标签: typo3 fluid extbase

我的流体中有一个嵌套的for循环。

首先打印所有父项。

嵌套for循环应该打印与父项相关的所有子元素。

但是孩子循环不起作用......这应该怎么样?

我有模型模块

和The Model Fach

并且从Fach到Modul有一个1:n的关系

我想打印一个这样的列表:

模数A.   - Fach 1   - Fach 2

模数B.   - Fach ysd

2 个答案:

答案 0 :(得分:1)

首先,如果对象“modules”和“fachs”之间存在关系,则无需调用两个单独的“findAll”方法。只需致电

即可
$moduls = $this->modulRepository->findAll();

Extbase将为您获取两个对象之间的关系。

您的模板应如下所示(我不知道属性名称,但您应该在此处获取上下文):

<f:for each="{moduls}" as="modul"> 
    {module.name}
    <f:for each="{modul.fachs}" as="fach"> 
       {fach.fachname} 
    </f:for> 
</f:for>

此输出应该提供您正在寻找的结果。

关于您的过滤问题。您应该只从数据库中获取数据。因此,最好的方法是使用您的存储库。 根据您要进行的过滤类型,可能会有不同的选项。但总的来说,我总是首先去存储库。也许在那之后做一些额外的事情。

答案 1 :(得分:0)

流体代码:

`<f:for each="{moduls}" as="modul"> 
    <f:for each="{fachs}" as="fach"> 
       {fach.fachname} 
    </f:for> 
</f:for>`

控制器:

`public function listAction() {
    $moduls = $this->modulRepository->findAll();
    $fachs = $this->fachRepository->findAll();
    $this->view->assign('moduls', $moduls);
    $this->view->assign('fachs', $fachs);
}`

目前收集了所有Fach物体,我是否必须使用液体或控制器进行过滤?