2015-06-12 3 views
-2

Я хочу viewhelper, который может быть полезен для назначения переменной в жидкости, я не хочу, чтобы переменная передавалась от контроллера.Как назначить переменную в жидкости?

+0

Я не понимаю, именно то, что вы хотите ? –

+2

Взгляните на расширение 'vhs'. Он предоставляет [такой ViewHelper] (https://fluidtypo3.org/viewhelpers/vhs/master/Variable/SetViewHelper.html) и многие другие. Действительно полезно. – Jost

ответ

9

Установить расширение называется VHS из TYPO3 хранилища

Определение пространства имен, как следующее в верхней части жидкости шаблон

{namespace v=FluidTYPO3\Vhs\ViewHelpers} 

Затем с помощью набора ViewHelper

<v:variable.set name="test" value="12345" /> 
Value of test : {test} 

{test} вернется Значение 12345

Для регистрации глобальной переменной

<v:variable.register.set name="test" value="12345"/>] 

получить значение глобальной переменной

Value of global variable : <v:variable.register.get name="test"> 
0

С первой версии жидкости можно определить переменные для специальной области: есть VH f:alias, который позволяет определить новые переменные в пределах этой ВХ. И в этом разница с variable.set VH от ext: vhs.

<f:alias map="{firstName: 'John', lastName: 'Doe'}"> 
    <p>Hello, my name is {firstName} {lastName}</p> 
</f:alias> 

<f:for each="{users}" as="user" iteration="iterator"> 
    <f:if condition="{iterator.isFirst}"> 
     <v:variable.set name="firstName">{user.firstName}</v:variable.set> 
     <v:variable.set name="lastName">{user.lastName}</v:variable.set> 
    </f:if> 
    : 
    do other output 
    : 
</f:for> 
<p>the first user was {firstName} {lastName}.</p> 

Проблема с установкой переменных внутри жидкости является возможность сделать программирование логики внутри жидкости:

<v:variable.set name="counter" value="0"> 
<f:for each="records" as="record"> 
    <f:if condition="{record.flag}"> 
     <v:variable.set name="counter"> 
      <f:cObject typoscriptObjectPath="lib.calc"> 
       {counter}+1 
      </f:cObject> 
     </v:variable.set> 
    </f:if> 
</f:for> 
<p>there are {counter} records with a flag set.</p> 

с этим TypoScript

lib.calc = TEXT 
lib.calc.current = 1 
lib.calc.prioriCalc = 1 
Смежные вопросы