我正在學習如何使用Slim框架,並且我在使用自定義中間件內的Flash消息時遇到了問題。超薄框架閃存和中間件
問題很簡單:我在中間件中使用了$app->flash('error', 'my message');
,下一頁中沒有消息。
中間件的方式
這裏的偉大工程,是我的代碼:
中間件
class SessionMiddleware extends \Slim\Middleware {
public function call() {
$app = $this->app;
$req = $app->request;
if(!preg_match('#^(/public)#', $req->getPath())) {
if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
//Do something
} else {
$app->flash('error', 'You must be logged');
if($req->getPath() != '/login') {
$app->redirect('/login');
}
}
}
$this->next->call();
}
}
登錄
<?php
if(isset($_SESSION['slim.flash']['error'])) {
echo '<p class="alert alert-danger"><strong>Error</strong>: '.$_SESSION['slim.flash']['error'].'</p>';
}
?>
應用
$app = new \Slim\Slim(array(
'mode' => 'development',
'debug' => true,
'templates.path' => './templates'
));
$app->add(new \SessionMiddleware());
$app->get('/login', function() use($app) {
$app->render('login.php');
});
任何想法如何解決呢?
謝謝
您應該意識到,在即將到來的第3版中,[正在刪除Flash消息](http://www.slimframework.com/docs/start/upgrade.html#flash-messages)。 – alexw
你是否以session_start開始會話? –
是Gustavo,我正在使用session_start(); on index.php – Ashraam