1

我正在尝试在中间件中获取 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';
});

但它给了我以下错误:

Slim 应用程序错误由于以下错误,应用程序无法运行:

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

2 回答 2

2

发生的情况是,slim 没有将任何参数传递给闭包,所以你得到了那个错误,试试这样的

$ajax = function(){
    $slim = Slim::getInstance();
    if (!$slim->request()->isXhr()) {
            $slim->redirect('/dashboard/');
    }
};
于 2012-10-18T02:20:10.237 回答
0

你可以做这样的事情。

$ajaxOnly = function($app) {
    if (!$app->request()->isXhr()) {
        $app->redirect('/dashboard');
    }
};
于 2014-02-21T08:59:39.653 回答