Twig 变量作为参考
Twig variables as references
我正在尝试通过 php 引用更改 Twig 变量,但我无法实现。我环顾四周,但无论是使用 Twig 函数还是使用 Twig 过滤器,我都无法做我想做的事。知道怎么做吗?
{% set hiding_options_classes = "default" %}
{{ hiding_options_func(content.field_hiding_options, hiding_options_classes) }}
{{ hiding_options_classes }}
在我的 Twig 扩展文件中:
public function hiding_options_func($hiding_options, &$hiding_options_classes) {
$hiding_options_classes = "coucou";
}
如果您想更改扩展中的变量,则需要通过引用传递上下文,例如
class Project_Twig_Extension extends \Twig\Extension\AbstractExtension {
public function getFunctions() {
return [
new \Twig\TwigFunction('set', [$this, 'setValue'], ['needs_context' => true, ]),
];
}
public function setValue(&$context, $key, $value) {
if (isset($context['_parent'])) $context['_parent'][$key] = $value;
$context[$key] = $value;
}
}
{% set foo = 'bar' %}
{{ foo }} {# out: bar #}
{% do set('foo', 'foo') %}
{{ foo }} {# out: foo #}
我正在尝试通过 php 引用更改 Twig 变量,但我无法实现。我环顾四周,但无论是使用 Twig 函数还是使用 Twig 过滤器,我都无法做我想做的事。知道怎么做吗?
{% set hiding_options_classes = "default" %}
{{ hiding_options_func(content.field_hiding_options, hiding_options_classes) }}
{{ hiding_options_classes }}
在我的 Twig 扩展文件中:
public function hiding_options_func($hiding_options, &$hiding_options_classes) {
$hiding_options_classes = "coucou";
}
如果您想更改扩展中的变量,则需要通过引用传递上下文,例如
class Project_Twig_Extension extends \Twig\Extension\AbstractExtension {
public function getFunctions() {
return [
new \Twig\TwigFunction('set', [$this, 'setValue'], ['needs_context' => true, ]),
];
}
public function setValue(&$context, $key, $value) {
if (isset($context['_parent'])) $context['_parent'][$key] = $value;
$context[$key] = $value;
}
}
{% set foo = 'bar' %}
{{ foo }} {# out: bar #}
{% do set('foo', 'foo') %}
{{ foo }} {# out: foo #}