请问一个问题。
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
有什么方法可以解决这个问题吗?它是生成菜单的功能,但有些链接需要一些参数。
答案 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 }}
(编辑) 请记住,您可以创建一个宏来实现此代码段的一些可重用性,
{% 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 %}