2015-05-10 6 views
1

Есть ли более чистый способ переключения между страницей или ссылкой действия в жидкости на основе var?Чистый способ переключения между страницей жидкости typo3 и ссылкой на действие

Теперь я использовал инструкцию if then, но это увеличивает количество двойных кодовых строк. Смотрите пример:

<f:if condition="{var}"> 
    <f:then> 
     <f:link.page pageUid="{PageId}"> 

      // a lot of code lines 

     </f:link.page> 
    </f:then> 
    <f:else>   
     <f:link.action pluginName="Name" controller="Cont"> 

      // the same a lot of code lines again 

     </f:link.action> 
    </f:else> 
</f:if> 

ответ

0

Вы можете извлечь код внутри ссылки в частичной.

Для этого сначала создайте частичный шаблон. Внутри расширения Extbase они помещаются в Ресурсы/Частные/Частицы по соглашению (вы можете изменить это с помощью метода setPartialsRootPath() объекта шаблона, но обычно это не обязательно).

# Resources/Private/Partials/LinkContent.html 
<!-- Insert your shared code lines here --> 

Тогда ссылка парциальное в шаблоне:

<f:if condition="{var}"> 
    <f:then> 
     <f:link.page pageUid="{PageId}"> 
      <f:render partial="LinkContent" /> 
     </f:link.page> 
    </f:then> 
    <f:else>   
     <f:link.action pluginName="Name" controller="Cont"> 
      <f:render partial="LinkContent" /> 
     </f:link.action> 
    </f:else> 
</f:if> 

Обратите внимание, что вы должны передать переменные явно в парциальное из родительского шаблона:

<!-- Assuming there's a variable "foo" in your template --> 
<f:render partial="LinkContent" arguments="{foo: foo}" /> 

В качестве альтернативы, вы можете импортировать весь объем в частичное:

<f:render partial="LinkContent" arguments="{_all}" />