3

$_SESSION['session'];スリムなマイクロフレームワークを使用して小枝テンプレートを取得したいときに問題が発生します。

これは私のコードです:

<!DOCTYPE html>
   <html>
      <head>
         <title>{{ title }} </title>
      </head>

     <body>
      <p> welcome <?php echo $_SESSION['username']; ?>                                                                                                                                       
         <p> {{ body }} </p>
       <a href="http://localhost/slim/public_html/logout">logout</a>
     </body>
  </html>

そのコードでセッションユーザー名を取得できません。

小枝テンプレートにセッションを渡す方法について何か提案はありますか?

4

4 に答える 4

11

テンプレートでアクセスできるように、セッションを小枝グローバルとして登録する必要があります。

//$twig is a \Twig_Environment instance
$twig->addGlobal("session", $_SESSION);

テンプレート内:

{{ session.username }}
于 2012-05-28T08:23:47.833 に答える
3

SlimとTwigも使用しています。私のクラス:

class twigView extends Slim_View {
    public function render( $template) {
        $loader = new Twig_Loader_Filesystem($this->getTemplatesDirectory());
        $twig = new Twig_Environment($loader);
        $twig->addGlobal("session", $_SESSION);
                return $twig->render($template, $this->data);
    }
}

ご覧のとおり、追加しましaddGlobalsた。これで正常に動作し、使用できるよう{{session.user_id}}になりました。

私のindex.phpの一部:

    require './lib/twigView_class.php';
    require_once './lib/Twig/Autoloader.php';
    require './lib/Paris/idiorm.php';
    require './lib/Paris/paris.php';

    Twig_Autoloader::register();

お役に立てば幸いです。

しかし、Twigで「グローバル」を使用するのは安全ですか?

于 2012-07-18T12:05:11.810 に答える
3

これが私がSlimFrameworkver3でそれを達成することができた方法です

$container['view'] = function ($container) {

    ...
    $view = new Twig($settings['view']['template_path'], $settings['view']['twig']);
    $view->getEnvironment()->addGlobal('session', $_SESSION);

    ...

    return $view;
};

そして、Twigテンプレートのセッションにアクセスします。

<a href="#" class="dropdown-toggle" data-toggle="dropdown">
  <img src="#" class="img-circle">&nbsp;{{ session.username }}<b class="caret"></b>
</a>

于 2016-06-15T11:40:52.957 に答える
2

phpファイル:

$app->get('/your_route_here', function() use ($app) {
$app->render('view_for_route.twig', array('session_username' => $_SESSION['username']) );});

小枝ファイル:

<p> welcome {{ session_username }} </p> 

PHPファイルから連想配列を介してTwigに値を渡す必要があります。

于 2012-07-01T13:53:56.170 に答える