【问题标题】:Laravel5 passing route args as middleware argsLaravel5 传递路由参数作为中间件参数
【发布时间】:2016-01-22 00:09:15
【问题描述】:

我希望将路由参数作为中间件参数传递,就像这样

Route::get('foo/{id}', ['middleware' => 'bar:{id}', function(){

});

如何做到这一点?

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.1 laravel-routing


    【解决方案1】:

    可以从请求变量中获取:

    Route::get('foo/{id}', ['middleware' => 'bar', function(){
    
    });
    
    public function handle($request, Closure $next) {
      $id = $request->id;
    }
    

    https://laracasts.com/discuss/channels/general-discussion/how-to-get-url-parameters-at-middleware?page=1

    bar:id
    

    用于将字符串id 传递给中间件。

    【讨论】:

    • 好的,所以没有直接的方法将路由 arg 绑定到中间件 arg 上。
    • 不,但你不需要它。您可以通过$request 变量获取它。
    【解决方案2】:

    如果您在控制器的构造函数中设置中间件,则可以传递动态中间件变量。

    public function __construct()
    {
        $this->middleware('bar:'.request()->id);
    }
    

    【讨论】:

    • 是的,我很困惑,忽略这一点。我认为您的答案(将中间件放在控制器中)是传递路由参数作为参数的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多