PHPテンプレートエンジンTwigでセッション情報を取得する(PHPフレームワークSlimを使って)

Webアプリを作っていまして、フレームワークはSlimを使い、テンプレートエンジンはTwigを使っていました。

はじめのうちは、セッションに入れた情報をそのまま使わずに、PHPから変数でTwigに渡していました。しかし、いちいち変数を渡すのはめんどくさい。ViewたるTwigから、セッション情報を直接参照しても、何も問題はないでしょう。Twigでセッションを参照できる方法ないかなあと調べていたところ、ありました。

Using Twig functions inside of Slim

上記サイトに紹介されているとおりに書けば良さそうなのですが、少しハマりました。
セッションに情報を埋め込んだ後に書く必要があります。
つまり、

$app = \Slim\Slim::getInstance();

$twig = $app->view()->getEnvironment();
$twig->addGlobal("session", $_SESSION);

$_SESSION['hoge'] = "hohoho";

ではなく

$app = \Slim\Slim::getInstance();

$_SESSION['hoge'] = "hohoho";

$twig = $app->view()->getEnvironment();
$twig->addGlobal("session", $_SESSION);

と書かなければなりません。

これで、Twigでは、

{{session.hogehoge}}

という形で参照できます。

Leave a Reply

Your email address will not be published.