静的関数を呼び出したり、静的変数をtwigで使用する方法はありますか?静的関数または変数を使用するtwigテンプレートエンジン
私は静的ヘルパー関数のクラスを持ち、テンプレートに1つまたは2つ使用したいと考えています。
静的関数を呼び出したり、静的変数をtwigで使用する方法はありますか?静的関数または変数を使用するtwigテンプレートエンジン
私は静的ヘルパー関数のクラスを持ち、テンプレートに1つまたは2つ使用したいと考えています。
私はそれをやってしまった。
最初は静的関数を呼び出すことができる関数です。その後、同じように使用でき
$twig = new Twig_Environment($loader);
$twig->addFunction('staticCall', new Twig_Function_Function('staticCall'));
function staticCall($class, $function, $args = array())
{
if (class_exists($class) && method_exists($class, $function))
return call_user_func_array(array($class, $function), $args);
return null;
}
、
{{ staticCall('myClass', 'mymethod', [optional params]) }}
他の魔法の方法を使用することです。
レンダリング$コンテキスト
$data['TwigRef'] = new TheClass();
class TheClass
{
public function __call($name, $arguments) {
return call_user_func_array(array('TheClass', $name), $arguments);
}
...
}
にクラスを追加しますが、その後にのみ、承認機能を呼び出すことが呼び出すので、いくつかの余分なチェックを追加する
{{ TwigRef.myMethod(optional params) }}
はおそらく最高のように使用することができます。
私は以前これを見ました。私はまだそれのための配置を見ている。 SF2プロジェクトでは、このコードはどこに行きますか? $ loaderはどこに定義されていますか? –
名前空間で完全なクラス名を渡すときに、この最初のソリューションを動作させるにはどうすればよいですか? – slob
いいです。私はこれが交響曲2のプロジェクトにあることを意図していないと考えます –
登録することで、機能を動的に追加することができます。彼らはすでにそれ自身の名前であなたの静的な機能エイリアス呼び出し可能かのどちらかです:
$twig = new Twig_Environment($loader);
$twig->addFunction('functionName', new Twig_Function_Function('someFunction'));
はFunctions section in Extending Twigを参照してください。
達成したいことは何ですか?変数を渡すか、テンプレートで使用する独自の関数を提供するだけですか? – hakre
私は静的ヘルパー関数のクラスを持っていますので、addFunctionを使ってそれらを追加する必要はありません。 – Alex
私はさらに、これはあなたにとっても興味深い答えです:[twig-pass function into template](http://stackoverflow.com/questions/3595727/twig-pass-function-into-template/3595941#3595941) – hakre