我正在尝试在中间件中获取请求对象。我正在创建一个 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
发生的情况是,slim 不会将任何参数传递给闭包,所以你得到这个错误,尝试这样的事情
$ajax = function(){
$slim = Slim::getInstance();
if (!$slim->request()->isXhr()) {
$slim->redirect('/dashboard/');
}
};
你可以做这样的事情。
$ajaxOnly = function($app) {
if (!$app->request()->isXhr()) {
$app->redirect('/dashboard');
}
};