我尝试创建并渲染我的第一部分。首先,我创建了文件" TableRow.html"。
然后我创建了一个别名地图用于测试目的。整个代码:
<f:layout name="Default" />
This Template is responsible for creating a table of domain objects.
If you modify this template, do not forget to change the overwrite settings
in /Configuration/ExtensionBuilder/settings.yaml:
Resources:
Private:
Templates:
List.html: keep
Otherwise your changes will be overwritten the next time you save the extension in the extension builder
<f:section name="main">
<table class="tx_troubleshooterv3" >
<tr><td>Test</td></tr>
<f:alias
map="{
masterpagez:
{
0: {
infotext: 'This is the main page.',
questions:
{
0: {
question: 'Main Question A1',
pages:
{
infotext: 'Answer A1',
questions:
{
0: {
question: 'Question B1'
pages: {
infotext: 'Answer B1',
questions:
{
0: {
question: 'Question C1',
pages: {
infotext: 'Answer C1',
questions: NULL
}
}
}
}
}
1: {
question: 'Question B2'
pages: {
infotext: 'Answer B2',
questions: NULL
}
}
}
}
},
1: {
question: 'Main Question A2',
pages:
{
infotext: 'Answer A2',
questions:
{
0: {
question: 'Question B2',
pages: {
infotext: 'Answer B2',
questions: NULL
}
}
}
}
}
}
}
}
}"
>
<f:for each="{masterpagez}" as="masterpage">
<f:for each='{masterpage.questions}' as="qquestion">
<f:for each='{qquestion.pages}' as='page'>
<f:render partial="TableRow" arguments="{page: page}"/>
</f:for>
</f:for>
</f:for>
</f:alias>
正如您所看到的,我只是尝试将前两个问题的页面传递给我的部分文件。然后我只是尝试在我的部分中呈现这些页面的信息文本:
TableRow.html
<tr><td><strong>{page.infotext}</strong></td></tr>
但我只得到输出&#34;测试&#34;没有别的。 为什么我的部分未呈现?
预期输出:
回答A1
回答B2
输出(以html为单位):
更新
我刚刚调试了变量&#34; page&#34;但有4个调试框显示而不是像我预期的那样2个?!有人可以解释一下吗?
答案 0 :(得分:1)
一切都按预期工作。你的部分被渲染。但是您正在创建一个非常复杂的数组,它不适合您的迭代方法。你的最后一个循环
<f:for each='{qquestion.pages}' as='page'>
将是迭代这个数组
pages: {
infotext: 'Answer B1',
questions:
{
0: {
question: 'Question C1',
pages: {
infotext: 'Answer C1',
questions: NULL
}
}
}
}
因此第一个{page}
将是Answer B1
,第二个将是问题数组。这正是您获得的调试输出。但是没有属性infotext
,因此{page.infotext}
不会输出任何内容。尝试使用此块进行迭代,然后查看输出:
<f:for each="{masterpagez}" as="masterpage">
<f:for each="{masterpage.questions}" as="qquestion">
<f:render partial="TableRow" arguments="{infotext: qquestion.pages.infotext}" />
</f:for>
</f:for>
在你的部分:
<tr><td><strong>{infotext}</strong></td></tr>