'da çalışmaz Sebep ne olursa olsun, Silex-app'ımda çalışmaz. Php.ini dosyasında error_reporting öğesini E_ALL | E_STRICT
olarak ayarlıyorum ve hatalar görüntüleniyor ve günlüğe kaydediliyor. Orada görülecek bir şey yok. Ancak bazı nedenlerle hiçbir oturum oluşturulmaz ve /project-root/tmp/sessions/
(ve ayrıca varsayılan session.save_path kullanırken değil) dosya yok. PdoSessionStorage'a geçerek, dosya sistemindeki okuma/yazma izinleriyle ilgili sorunları ortadan kaldırmak için hiçbir sonuç alınmadı. Ayrıca $app['session']
, $request->getSession()
ve $app['request']->getSession()
arasında geçiş yapmaya çalıştım.Oturumlar Silex App
Ben sorunları görmek için başka nerede olarak bir kayıp am ... İşte
yazdım çok basit bir test uygulaması (use
yer kazanmak için atlanırsa) 'dir. Temel olarak bu test, gerçek uygulamamda elde etmeye çalıştığım şeyi gösterir. Bir diziyi oturumda saklamak istiyorum. $app->before()
'da, değerin ayarlanıp ayarlanmadığını kontrol et ve sonra gösterilmek üzere dalma geçir, ör. giriş info: You are logged in as {{ user.name }}
:
<html>
<head><title>test</title></head>
<body>
{% if before is defined %}before: {{ before.key }}{% endif %}
{% if get is defined %}get: {{ get.key }}{% endif %}
</body>
</html>
/hiçbir şey için/testi giderken sadece "get: testi" görüntülenir olacak:
$app = new Application;
$app['debug'] = true;
$app->register(new SessionServiceProvider, array(
'session.storage.save_path' => dirname(__DIR__) . '/tmp/sessions'
));
$app->register(new TwigServiceProvider, array(
'twig.path' => __DIR__ . '/views'
));
$app->before(function (Request $request) use ($app) {
// if ($app['debug'] == true) {
// $request->getSession()->set('test', array('key' => 'value'));
// }
if ($request->hasPreviousSession() && $request->getSession()->has('test')) {
$test = $request->getSession()->get('test');
if ($test !== null) {
$app['twig']->addGlobal('before', $test);
}
}
});
$app->get('/', function() use ($app) {
return $app['twig']->render('sessiontest.twig');
});
$app->get('/test', function() use ($app) {
$app['session']->set('test', array('key' => 'value'));
return $app['twig']->render('sessiontest.twig',
array('get' => $app['session']->get('test')));
});
$app->run();
sessiontest.twig şöyle görüntülenir (ancak Aslında, ne daha önce/ne de tazelenen tetikleyicilere geri dönüş olarak saklanır.
Lütfen bunu en üste ekleyerek deneyin: '$ app-> before (işlev ($ request) {$ request-> getSession() -> start();});' – igorw
@igorw Teşekkürler, bu hile yaptı . Ağaçlar için odun görmedim sanırım. Zend Framework ile çalışmaya başladığım sahnelerin arkasına çok alışkınım, elle başlatmayı bile düşünmedim, – dbrumann
Bunu bir cevap olarak tekrar yayınlayayım. – igorw