我的流体中有一个嵌套的for循环。
首先打印所有父项。
嵌套for循环应该打印与父项相关的所有子元素。
但是孩子循环不起作用......这应该怎么样?
我有模型模块
和The Model Fach
并且从Fach到Modul有一个1:n的关系
我想打印一个这样的列表:
模数A. - Fach 1 - Fach 2
模数B. - Fach ysd
答案 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物体,我是否必须使用液体或控制器进行过滤?