想问一下lumen中间件获取参数的问题。

在公司实习需要用到lumen开发接口,决定恶补一下lumen,期间遇到一个巨坑!
不管是官方最新5.4英文文档还是中文5.3文档,lumen在中间件里获取参数都是用的input方法,文档demo如下:

<?php
namespace App\Http\Middleware;
 
use Closure;
 
class OldMiddleware
{
    /**
     * 运行请求过滤器。
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->input('age') <= 200) {
            return redirect('home');
        }
 
        return $next($request);
    }
 
}

但是在实际过程中,我发现input()根本获取不到!

google这个问题才发现问题所在:

*There are some conventional ways in Laravel doesn’t work on Lumen. And get parameter form URI in middleware is one of them. In Laravel, I just need to call $request->id, it will work like magic. But here in order to get parameter in Lumen, I need to do something like this:
$request->route()2*

原来lumen没有这个方法,只能用$request->route()来获取,请问有大牛遇到过这个问题吗?

阅读 6.5k
2 个回答

如果你是lumen5.4+在中间件儿里面 你可以通过访问以下方式得到Get的值

// 网址:http://www.domain.com/test?p=test
$request->get('p');// 输出:test
或者
$request->all();// 输出:[p=>'test']

图片描述图片描述

楼上的情形已经是正规的url, 这情况下get当然有数据.
但假设为 /app/user/{id} , 此时就无法直接取这id了. 暂只能用非正常方法取$request->route()[2]["id"].
来自:https://stackoverflow.com/que...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题