如何在Slim Framework上访问中间件中的请求对象

时间:2012-08-08 18:47:40

标签: php slim

我正在尝试将Request对象放在中间件中。我正在创建一个ajaxOnly中间件,需要检查isXhr()请求方法。我试图创建类似下面的内容:

 $ajaxOnly = function($request, $response, $route) { // this is the line 3
             if (!$request->isXhr()) {
                Slim::redirect('/dashboard/');
             }
            };

使用那样:

$app->get('/posts/:start_date/:end_date', $ajaxOnly, function($start_date, $end_date) use($app) {
    echo 'ok';
});

但它给了我以下错误:

超薄应用程序错误应用程序无法运行,因为 以下错误:

  • 代码:2消息:
  • {closure}()
  • 缺少参数1
  • 文件:/var/www/myapp/routes.php行:3

2 个答案:

答案 0 :(得分:2)

会发生什么,slim不会将任何参数传递给Closure,所以你得到了这个错误,试试这样的事情

$ajax = function(){
    $slim = Slim::getInstance();
    if (!$slim->request()->isXhr()) {
            $slim->redirect('/dashboard/');
    }
};

答案 1 :(得分:0)

你可以做这样的事情。

$ajaxOnly = function($app) {
    if (!$app->request()->isXhr()) {
        $app->redirect('/dashboard');
    }
};