Я строю навигацию с помощью VHS Menu ViewHelper. Ниже приведен весь код. Мой вопрос, вероятно, очень основной жидкости.В TYPO3 Fluid, как мне получить доступ к переменной изнутри цикла foreach?
Внутри области действия, как мне получить доступ к переменной, которая существует за пределами этой области, или как передать ее в эту область?
EDIT: Я обновил свой код, чтобы не использовать тире в именах переменных, а также присвоить разные имена v: page.menu с as = "menuLevel0".
Полный код:
{namespace v=Tx_Vhs_ViewHelpers}
<ul id="nav" class="grid-full classic">
<v:page.menu as="menuLevel0" expandAll="1" useShortcutData="1" levels="4" classHasSubpages="parent" classFirst="first" classLast="last">
<f:for each="{menuLevel0}" as="itemLevel0" iteration="iterLevel0">
<li class="{itemLevel0.class} level0 nav-{iterLevel0.cycle} level-top">
<a href='{itemLevel0.link}' class='level-top'><span>
<f:if condition="{itemLevel0.nav_title}"><f:then>{itemLevel0.nav_title}</f:then><f:else>{itemLevel0.title}</f:else></f:if>
nav-{iterLevel0.cycle}</span>
</a>
<f:if condition="{itemLevel0.hasSubPages}">
<f:then>
<v:page.menu as="menuLevel1" expandAll="1" classHasSubpages="parent" classFirst="first" classLast="last">
<ul class="level0">
<f:for each="{menuLevel1}" as="itemLevel1" iteration="iterLevel1">
<li class="{itemLevel1.class} level1 nav-{iterLevel0.cycle}-{iterLevel1.cycle}">
<a href='{itemLevel1.link}' class='level-top'><span>
<f:if condition="{itemLevel1.nav_title}"><f:then>{itemLevel1.nav_title}</f:then><f:else>{itemLevel1.title}</f:else></f:if>
nav-{menuLevel0.iterLevel0.cycle}-{iterLevel1.cycle}
</span></a>
</li>
</f:for>
</ul>
</v:page.menu>
</f:then>
</f:if>
</li>
</f:for>
</v:page.menu>
</ul>
Я только заметил, что он не работает только для первого элемента основного раздела. – Urs
, и он работает с page.menu.directory, см. Https://github.com/FluidTYPO3/vhs/issues/479 – Urs
У вас, похоже, есть неправильное представление о том, как обращаться к переменным из родительской области. Вам действительно не нужно использовать '' {menuLevel0.iterLevel0.cycle} ''. '' {iterLevel0.cycle} '' достаточно. – Cedric