【问题标题】:get the url in the middleware laravel获取中间件laravel中的url
【发布时间】:2015-02-28 10:58:01
【问题描述】:

我有我的中间件,在其中我试图访问页面的当前 url。所以我做了这样的事情:

$url = Request::url();

我用过:

use App\Http\Requests; use Illuminate\Http\Request;

但我不断收到以下错误:

Non-static method Illuminate\Http\Request::url() should not be called statically, assuming $this from incompatible context

有什么想法吗?

【问题讨论】:

    标签: url laravel middleware


    【解决方案1】:

    您可以从请求对象访问 url:

     public function handle($request, Closure $next)
     {
          $url = $request->url();
          ...
     }
    

    Request 对象也有 fullUrl()path() 方法。选择适合您需求的那一款

    【讨论】:

    • 是否有任何方法可以返回实体/{id}/queries 之类的 url 模式?
    【解决方案2】:

    在 Laravel 5 中,请求已经传递给 handle() 函数

    class MyMiddleware {
    
        public function handle($request, Closure $next)
        {
            $url = $request->url();
    
            // Do stuff here
    
            return $next($request);
        }
    
    }
    

    Laravel 5 尝试远离外观(例如:Request::url() 等调用)以支持使用依赖注入,因此您可能会注意到某些函数无法像在 4 中那样访问。

    这是对 Laravel 5 https://mattstauffer.co/blog/laravel-5.0-method-injection 中的依赖注入的一个很好的解释

    【讨论】:

    • url 是Request Object的一个方法!所以$request->url() 是正确的语法。
    猜你喜欢
    • 2016-04-01
    • 2018-08-07
    • 1970-01-01
    • 2021-11-19
    • 2016-04-15
    • 1970-01-01
    • 2017-04-12
    • 2019-06-29
    • 2018-01-06
    相关资源
    最近更新 更多