2015-02-28 3 views
2

У меня есть мое промежуточное ПО и внутри него. Я пытаюсь достичь текущего URL-адреса страницы. так что я сделал что-то вроде этого:получить URL-адрес в промежуточном программном обеспечении laravel

$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

какие-нибудь идеи?

ответ

7

Вы можете получить доступ к URL из объекта запроса:

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

Request объект имеет также fullUrl() и path() методы. Выберите тот, который соответствует вашим потребностям

+0

я Есть ли какой-либо метод, возвращающий шаблон url, например entity/{id}/query? – GaurabDahal

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

Heres довольно хорошее объяснение инъекции зависимостей в Laravel 5 https://mattstauffer.co/blog/laravel-5.0-method-injection

+1

url - это метод объекта запроса! Таким образом, '$ request-> url()' является правильным синтаксисом. – igavriil

+0

Хорошее место, обновленный ответ – Wader

Смежные вопросы