我知道这是一个老问题,但是在搜索互联网3个小时并且没有找到任何例子之后,我想确保它被记录下来。
回到您最初的尝试之一:
{{ attribute(lang, get, 'test') }}
我正在尝试做同样的事情,这应该根据文档工作。不幸的是,没有使用它的例子。我发现方法名称(get)必须是一个字符串('get'),所以我改变了它,但它仍然不起作用。我最终做的是这样的:
{% set myText = lang.get('test') %}
{{ myText }}
这效果很好,但是当我必须重新执行此操作时,需要编写很多代码。因此,我用这两种方法制作了一个简单的模板,并检查了编译的输出。原文是这样编译的:
echo twig_escape_filter($this->env, $this->getAttribute((isset($context["lang"]) ? $context["lang"] : null), "get", "test"), "html", null, true);
和第二个(2衬里)到这个:
$context["myText"] = $this->getAttribute((isset($context["lang"]) ? $context["lang"] : null), "get", array(0 => "test"), "method");
echo twig_escape_filter($this->env, (isset($context["myText"]) ? $context["myText"] : null), "html", null, true);
经过检查,我意识到了差异(检查第3个参数以获取属性),参数参数是一个数组!这是一个很好的信息。我将原来的样子改成了这个:
{{ attribute(lang, 'get', ['test']) }}
它现在正在工作!
希望这有助于某人!