如何使用SessionServiceProvider创建会话?

时间:2015-11-27 19:40:42

标签: php session silex

我找不到错误。我无法访问会话变量。 我试试这个:     

$app = new Silex\Application();
$app['debug']=true;

$app->register(new Silex\Provider\SessionServiceProvider()); 


$app->get("/", function(Request $request) use($app)
{
    return  $app["session"]->get('is_admin');
});

$app->run();

use Symfony\Component\HttpFoundation\Request;
$app->before(function (Request $request, Silex\Application $app){
    $app['session']->set('is_admin', true);
});

我这样做是为了解决问题(谢谢Stepashka):

$app = new Silex\Application();
$app['debug']=true;
use Silex\Provider\SessionServiceProvider;
$app->register(new SessionServiceProvider());
$app->before(function() use ($app){
    $app['session']->start();
    $app['session']->set('is_admin', "dfghjdf");
});
$app->get("/", function() use($app)
{
    return  print_r($app['session']->get('is_admin'));
});
$app->run();

1 个答案:

答案 0 :(得分:1)

事情是你的提供者在$app->run()之前没有被初始化。您应该在控制器中或至少在$app->run()之后分配值。

Silex中还有一个Middleware功能,所以你可以这样做:

$app->before(function (Request $request, Application $app) {
    $app['session']->set('is_admin', true);
});