TYPO3 Fluid elseif с условием && - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь заставить этот код работать:

<f:if condition="{item.spacer} || {item.current}">
  <f:then>
    <li class="{f:if(condition:item.current, then:'nav-item active')}{f:if(condition:item.spacer, then:'nav-item spacer')}">
      <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
  </f:then>
  <f:else if="{item.children} && {item.active}">
    <li class="nav-item dropdown active">
      <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
  </f:else>
  <f:else if="{item.children}">
    <li class="{f:if(condition:item.children, then:'nav-item dropdown')}">
      <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
  </f:else>
  <f:else if="{item.active}">
    <li class="{f:if(condition:item.active, then:'nav-item active')}">
      <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
  </f:else>
  <f:else>
    <li class="nav-item">
      <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
  </f:else>
</f:if>

li-тег впоследствии закрывается в родительской части.Единственное, что не работает, это комбинированное условие в первом случае, если.Хотя item.children и item.active имеют значение true, выполняется условие, состоящее только из item.active.Что я здесь не так делаю?

Спасибо, Джонатан

1 Ответ

1 голос
/ 22 марта 2019

Активные элементы меню имеют current = 1 и active = 1.В первом If-условии проверяется current, и если = 1, выполняется следующее 'then'.После этого ни один из остальных не проверяется, и из-за этого он не работает.Поскольку мне не нужно {item.spacer} || {item.current}, этот код работает для меня:

<f:if condition="{item.children} && {item.active}">
<f:then>
  <li class="nav-item dropdown active">
    <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
</f:then>
<f:else if="{item.children}">
  <li class="nav-item dropdown">
    <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
</f:else>
<f:else if="{item.active}">
  <li class="nav-item active">
    <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
</f:else>
<f:else if="{item.spacer}">
  <li class="nav-item spacer">
    <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
</f:else>
<f:else>
  <li class="nav-item">
    <f:render partial="Navigation/Elements/Link" arguments="{item: item}"/>
</f:else>
</f:if>
...