Laravel Request получает текущий путь со строкой запроса

Есть ли способ Laravel получить текущий путь запроса с его параметрами запроса?

Например, для URL:

http://www.example.com/one/two?key=value

Request::getPathInfo() вернет /one/two.

Request::url() вернет http://www.example.com/one/two.

Желаемый результат: /one/two?key=value.


person John Bupit    schedule 22.07.2015    source источник
comment
Для тех, кому это нужно - прокрутите вниз до ответа Хьюберта.   -  person Džuris    schedule 25.04.2018
comment
Для тех, кто использует v5.2 или выше.   -  person John Bupit    schedule 25.04.2018


Ответы (9)


Попробуйте использовать следующее:

\Request::getRequestUri()
person Hubert Dziubiński    schedule 20.09.2016
comment
Это должен быть принятый ответ. Он возвращает именно то, что хочет OP. На 5.2 работает нормально. - person Jamie; 22.09.2017

Ларавель 4.5

Просто используйте

Request::fullUrl()

Он вернет полный URL

Вы можете извлечь строку запроса с помощью str_replace

str_replace(Request::url(), '', Request::fullUrl())

Или вы можете получить массив всех запросов с помощью

Request::query()

Ларавель > 5.1

Просто используйте

$request->fullUrl()

Он вернет полный URL

Вы можете извлечь строку запроса с помощью str_replace

str_replace($request->url(), '',$request->fullUrl())

Или вы можете получить массив всех запросов с помощью

$request->query()
person Thomas Bolander    schedule 01.02.2016
comment
в более новых версиях laravel используйте экземпляр $request вместо статического вызова функции запроса - person DivineCoder; 31.08.2017
comment
в моем случае я хотел сохранить порядок параметров запроса, но fullUrl таинственным образом меняет порядок моего параметра. мне пришлось прибегнуть к чистому php, а затем $actual_link = (isset($_SERVER['HTTPS'])? https: http). ://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]; - person DivineCoder; 31.08.2017
comment
Request::fullUrl() отлично работал на Laravel 4. - person nensamuel; 15.04.2019
comment
$request->query() круто в версии 5.4 - person Mirko; 10.12.2019

Класс Request не предлагает метода, который вернул бы именно то, что вам нужно. Но вы можете легко получить его, объединив результаты двух других методов:

echo (Request::getPathInfo() . (Request::getQueryString() ? ('?' . Request::getQueryString()) : '');
person jedrzej.kurylo    schedule 22.07.2015
comment
Ага, есть масса способов иначе: str_replace(url(), '', Request::fullUrl()) - person John Bupit; 22.07.2015
comment
request()->getQueryString() имеет дополнительное преимущество, заключающееся в том, что он доступен в колонке без передачи каких-либо нечетных включений или переменных, если вам нужно изменить URL-адреса в содержимом. - person Spencer O'Reilly; 12.05.2017
comment
На самом деле есть метод, который возвращает точно полный URL... ответ ниже также работает в Laravel 5 - person Mladen Janjetovic; 06.09.2018

Получите текущий URL-адрес, включая строку запроса.

echo url()->full();
person Gr Brainstorm    schedule 03.03.2019
comment
если у вас будут точки в запросе, они станут символами подчеркивания, например. nested.foo=bar => nested_foo=bar, \Request::getRequestUri() дает точные результаты - person Lizard Derad; 09.04.2021

$request->fullUrl() также будет работать, если вы вводите Illumitate\Http\Request.

person Yada    schedule 16.03.2016

Получите параметр флага из строки URL http://cube.wisercapital.com/hf/create?flag=1

public function create(Request $request)
{
$flag = $request->input('flag');
return view('hf.create', compact('page_title', 'page_description', 'flag'));
}
person Ajai    schedule 07.07.2016

Подобно ответу Яды: $request->url() также будет работать, если вы вводите Illuminate\Http\Request

Изменить: разница между fullUrl и url заключается в том, что fullUrl включает параметры вашего запроса.

person Braden Holt    schedule 20.06.2017

Если у вас есть доступ к объекту Request $request, вы также можете использовать нестатический метод

$request->getRequestUri()
person Garrick Crouch    schedule 18.05.2021

Просто разместите это там..... документы: https://laravel.com/docs/7.x/requests

person Jeremy    schedule 15.06.2020