2016-03-24 20 views
0

私は何かに取り組んでいるので、しばらくしています。私は非常に古いテンプレートパーサを使用しており、私はTwigに移る時だと思った。twig(symfony以外)のグローバル変数

これはとてもうまく見えますが、それを使用するのが大好きですが、解決策が見つからないような問題が発生します。私は私の質問に関していくつか見てきましたが、うまく動作せず、symfonyを使用しているほとんどの時間です。

ここで説明します。

私はindex.phpをメインページ(frontcontroller)として使用し、それに私のファイルを含めます。私はログイン情報などを表示する右のメニューを使用するので、それはbase.htmlに表示されるので、すべてのテンプレートで表示されます...私はindex.phpファイルでグローバル配列を設定する方法を見つける必要があります。

$ twig-> addGlobal( 'test'、 'This is my test)があります。それらの多くを追加する必要があります。

getGlobals()でExtentionがありますが、そこに用意されている配列に手作業で追加する必要があり、インデックスに配列フォームを渡す方法が見つかりません。私はそれを調べるだけでなく、非難されていると言います。

多分私はそれを見渡すか、または小枝は私のための解決策ではありませんか? ここで何か助けを歓迎しており、ありがとうございます!

ニコ。

答えて

1

あなたは小枝の拡張に使用できる:getGlobals方法が実際に廃止され、しかしに

class MyTwigExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface 
{ 
    private $some; 

    private $data; 

    public function __construct($some, $data) { 
     $this->some = $some; 
     $this->data = $data; 
    } 

    public function getGlobals() 
    { 
     $globals = array(); 

     // .. create globals by using the properties defined above 

     return $globals; 
    } 

    // ... 
} 

を彼らが言っているコード:

@deprecated since 1.23(to b 2.0で削除E)、あなたはTwig_Extension_GlobalsInterfaceを実装する場合getGlobalsメソッドは廃止されていないので、代わりに使用して

Twig_Extension_GlobalsInterfaceを実装します。

あなたはTwig_Environmentは、このような拡張機能を追加作成しますので、基本的に、あなたの拡張機能のコンストラクタにグローバルを作成するために必要なすべてのデータを渡す

​​

を。

+0

上記のMyTwigExtensionクラスには、質問に答えるために必要な部分だけが含まれています。もちろん、必要なすべてのメソッドを実装する必要があります。どのようなエラーメッセージが表示されますか? –

+0

getName関数を渡す必要があったか、エラーが発生しました。どのように私はそれに私の配列を渡すのですか?例: $ global_array = [ \t 'VAR1' \t \t => 'OUTPUT1'、 \t 'var2の' \t \t => 'OUTPUT2'、 \t // .... ... \t]。 – Kohlzz

+0

コンストラクタパラメータを使用します。私は私の答えでそれを記述しました。 –

-1

$GLOBALSをTwig_Enviromentに渡すのはどうですか?

$ TwigLoader = new Twig_Loader_Filesystem([...]);

$小枝=新しいTwig_Environment($ TwigLoader、 配列( 'グローバル' => $ GLOBALS ) )。小枝テンプレートのその後

{{globals.your_variable_name}}

関連する問題