中间件中的 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;
我正在 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;