中间件中的 Lumen $request->input() return null

Lumen $request->input() return null in middleware

我正在 Lumen 中构建一个 RESTful 服务器,但是当我将查询参数传递给它。所以,问题是——我做错了什么,以及如何通过 $request->input() 或 $request->all()?

获取参数

routes/web.php

<?php

use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;

$router->group(['prefix' => 'accounts/{old}'], function () use ($router) {
    $router->get('register', function ($old)    {
        return 'You are OK! More than 18! '.$old.' years';
    });
});

app/Http/Middleware/OldMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

class OldMiddleware
{
    /**
     * Check user old and if it was less than 18 return something and else continue.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->input('old') < 18) { 
            return "You are under 18!";
        }
        return $next($request);
    }
}

bootstap/app.php

$app->middleware([
    App\Http\Middleware\OldMiddleware::class
]);

请求示例:

curl http://server.loc/accounts/20/register

在 OldMiddleware.php 中,$request->input() return null 并且我无法访问中间件中的旧传递值(以验证用户的年龄)

我找到了解决方案。这种方式看起来很疯狂!

$request->route('old');

不要忘记导入 Requests(在第 2 行,php 开始标记之后):

use Illuminate\Http\Request;