Symfony& Twig:如何通过数据库数据获取树枝中的变量?

时间:2018-01-09 11:28:08

标签: twig

请问一个问题。

public function __construct($catid=0) { if ($catid > 0) $this->load($catid); }

如果我在{{ dump(app.user.slugName) }}中执行上述代码段,我会在应用中获得用户的Twig(" my-user-2",ie)(SlugName是实体用户的属性)。好的&正确。但是......我想从var(来自BD数据的var)

订购此操作

我有一个名为slugName的变量,其设置如下:

option

但是,当我尝试使用{% set option = 'app.user.slugName' %}输出此变量时,它会返回{{ dump(option)}}作为文字。它不会返回app.user.slugName

my-user-2有什么方法可以解决这个问题吗?它是生成菜单的功能,但有些链接需要一些参数。

1 个答案:

答案 0 :(得分:1)

我明白你的意思,但Twig无法评估这样的表达 要实现这样的目标,你需要一个这样的代码片段,

{% set value_methods = 'app.user.slugname' %}

{% set option_value = _context %}
{% for method in (value_methods|split('.')) if method != '' %}
    {% set option_value = attribute(option_value, (method|replace({'()': '', }))) %}
{% endfor %}

{{ option_value }}

twigfiddle

(编辑) 请记住,您可以创建一个宏来实现此代码段的一些可重用性,

{% import _self as macros %}
{{ macros.evaluate(_context, 'app.user.slugname') }}


{% macro evaluate(context, value_methods) %}
    {% set option_value = context %}
    {% for method in (value_methods|split('.')) if method != '' %}
        {% set option_value = attribute(option_value, (method|replace({'()': '', }))) %}
    {% endfor %}
    {{ option_value }}
{% endmacro %}