Laravel请求使用查询字符串获取当前路径

Joh*_*pit 47 php laravel laravel-5 laravel-request

是否有Laravel方法来获取具有查询参数的Request的当前路径?

例如,对于URL:

http://www.example.com/one/two?key=value
Run Code Online (Sandbox Code Playgroud)

Request::getPathInfo()会回来的/one/two.

Request::url()会回来的http://www.example.com/one/two.

期望的输出是/one/two?key=value.

小智 40

尝试使用以下内容:

\Request::getRequestUri()
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.它完全返回OP想要的东西.在5.2上工作正常. (4认同)

jed*_*ylo 36

请求类不提供可以准确返回所需内容的方法.但是你可以通过连接其他两种方法的结果轻松获得它:

echo (Request::getPathInfo() . (Request::getQueryString() ? ('?' . Request::getQueryString()) : '');
Run Code Online (Sandbox Code Playgroud)

  • 是的,除此之外还有很多方法:`str_replace(url(),'',Request :: fullUrl())` (3认同)
  • `request() - > getQueryString()`还有一个额外的好处,即如果你需要更改内容中的url,可以在刀片中使用,而不会传入任何奇怪的包含或变量. (2认同)

Tho*_*der 36

Laravel 4.5

只是用

Request::fullUrl()
Run Code Online (Sandbox Code Playgroud)

它将返回完整的URL

您可以使用str_replace提取Querystring

str_replace(Request::url(), '', Request::fullUrl())
Run Code Online (Sandbox Code Playgroud)

或者您可以获得所有查询的数组

Request::query()
Run Code Online (Sandbox Code Playgroud)

Laravel> 5.1

只是用

$request->fullUrl()
Run Code Online (Sandbox Code Playgroud)

它将返回完整的URL

您可以使用str_replace提取Querystring

str_replace($request->url(), '',$request->fullUrl())
Run Code Online (Sandbox Code Playgroud)

或者您可以获得所有查询的数组

$request->query()
Run Code Online (Sandbox Code Playgroud)

  • `$request->query()` 在 5.4 中很棒 (2认同)

小智 5

获取包含查询字符串的当前URL。

echo url()->full();
Run Code Online (Sandbox Code Playgroud)

  • 如果查询中有点,它们将变成下划线,例如 `nested.foo=bar` => `nested_foo=bar`,`\Request::getRequestUri()` 给出准确的结果 (2认同)

小智 5

如果您有权访问该Request $request对象,您还可以使用非静态方法

$request->getRequestUri()
Run Code Online (Sandbox Code Playgroud)