これは古い質問であることは知っていますが、3時間インターネットを精査して例を見つけられなかったので、文書化されていることを確認したかった.
元の試行の 1 つに戻ります。
{{ 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番目(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);
調べてみると、違いがわかりました (getAttribute の 3 番目のパラメーターを確認してください)、arguments パラメーターは配列です。これは知っておくとよい情報です。オリジナルを次のように変更しました。
{{ attribute(lang, 'get', ['test']) }}
そしてそれは今働いています!
これが誰かを助けることを願っています!