Как получить доступ к объекту запроса внутри промежуточного программного обеспечения на Slim Framework

Я пытаюсь получить объект запроса внутри промежуточного программного обеспечения. Я создаю промежуточное ПО 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 Application Error Приложение не может быть запущено из-за следующей ошибки:

  • Код: 2 Сообщение:
  • Отсутствует аргумент 1 для {close}()
  • Файл: /var/www/myapp/routes.php Строка: 3

person rizidoro    schedule 08.08.2012    source источник


Ответы (2)


Что происходит, так это то, что slim не передает никаких параметров в Closure, поэтому вы получаете эту ошибку, попробуйте что-то вроде этого

$ajax = function(){
    $slim = Slim::getInstance();
    if (!$slim->request()->isXhr()) {
            $slim->redirect('/dashboard/');
    }
};
person José Gómez    schedule 18.10.2012
comment
Начиная с Slim 2 вам нужно будет использовать $slim = \Slim\Slim::getInstance(); - person Tobias Snoad; 30.01.2013

вы могли бы сделать что-то вроде этого.

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