variable.set ViewHelper <vhs:variable.set>
Variable: Set
Sets a single variable in the TemplateVariableContainer scope. The variable then becomes accessible as {var}.
Combines well with v:
to set shorter variable
names referencing dynamic variables, such as:
<v:variable.set name="myObject" value="{v:variable.get(name: 'arrayVariable.{offset}')}" />
<!-- If {index} == 4 then {myObject} is now == {arrayVariable.4} -->
{myObject.name} <!-- corresponds to {arrayVariable.4.name} -->
Note that {array
is not possible
due to the way Fluid parses nodes; the above piece of
code would try reading array
as a variable actually called "arrayVariable.{offset}.name"
rather than the correct array
.
In many ways this ViewHelper works like f:
with one exception: in f:
the variable only
becomes accessible in the tag content, whereas v:
inserts the variable in the template and leaves it there
(it "leaks" the variable).
If $name contains a dot, VHS will attempt to load the object
stored under the named used as the first segment part and
set the value at the remaining path. E.g.
{value -> v:
would attempt to load {object}
first, then set
property.
on that object/array using
ObjectAccess::setPropertyPath(). If {object}
is not
an object or an array, the variable will not be set. Please
note: Extbase does not currently support setting variables
deeper than two levels, meaning a name
of fx foo.
will be ignored. To set values deeper than two levels you
must first extract the second-level object then set the
value on that object.
Using as {value -> v:
makes {my
contain
{value}
.
Arguments
value
- DataType
- mixed
- Required
- false
- Description
- Value to set
name
- DataType
- string
- Required
- false
- Description
- Name of variable to assign