In TYPO3 Fluid, how do I access a variable from within a foreach loop?

I am creating navigation using the VHS Menu ViewHelper . Below is all the code. My question is probably a very basic fluid though.

Inside a scope, how do I access a variable that exists outside of that scope, or how do I pass it to this scope?

EDIT: I updated my code so as not to use dashes in variable names, and also assign different names to v: page.menu with as = "menuLevel0".


Full code:

{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>
+4
source share
4 answers

In a fluid, variables are and should be covered by the blocks you use.

v:page.menu ViewHelpers, :

  • : {levelOneIterator} {levelTwoIterator}
  • : lowerCamelCased. var.

, :

{iter}. tash-ified, . , .

:

`` `      {foo-bar}//echos "baz"      {foo-bar}//echos "bing", vaiable, "foo-"

`` `

Update:

var-call. for-loop var.

<f:for each="{iterable}" as="iterableItem iteration="iteratorRoot"> {iteratorRoot.index} <!-- Echoes the current, zero-indexed iteration --> <f:for each="{iterableItem}" as="subItem" iteration="iterationChild"> <!-- STILL echoes the current, zero-indexed iteration --> {iteratorRoot.index} <!-- Echoes the current, zero-indexed sub iteration --> {iterationChild.index} </f:for> </f:for>

, . (as = "name" ) .

+2

"-" ! CamelCase:

<f:render section="layer2" arguments="{uid: curPage.uid, parentIter: iter.cycle}" />
+1

public function listAction() {
    $events = $this->eventsRepository->getEventsList();
    $this->view->assign('eventsList', $events);
}

, .

<f:for each="{eventsList}" as="events">
    <tr>
        <td> {events.event_id} </td>        
        <td> <f:link.external uri="{events.event_link}" target="_blank">{events.event_link}</f:link.external></td>
        <td><f:format.date format="d-m-Y">{events.event_date}</f:format.date></td>
    </tr>
</f:for>
+1

varibale foreach?

0

Source: https://habr.com/ru/post/1527040/


All Articles