【发布时间】:2016-01-15 06:12:44
【问题描述】:
我正在学习如何使用 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 messages are being removed。
-
你是用
session_start开始会话吗? -
是的 Gustavo,我正在使用 session_start();在 index.php 上
-
感谢 alexw 的信息!也许我应该开始学习 Slim V3,但我找不到任何好的文档:/
-
@Ashraam 以下是 Slim V3 文档:slimframework.com/docs
标签: php frameworks slim middleware