【问题标题】:Laravel Request getting current path with query stringLaravel 请求使用查询字符串获取当前路径
【发布时间】:2015-10-11 21:03:47
【问题描述】:

有没有一种 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

【问题讨论】:

    标签: php laravel laravel-5 laravel-request


    【解决方案1】:

    Request 类不提供可以准确返回您需要的方法。但是您可以通过连接其他 2 种方法的结果轻松获得它:

    echo (Request::getPathInfo() . (Request::getQueryString() ? ('?' . Request::getQueryString()) : '');
    

    【讨论】:

    • 是的,还有很多其他方法:str_replace(url(), '', Request::fullUrl())
    • request()->getQueryString() 的另一个好处是可以在刀片中使用,如果您需要更改内容中的 url,则无需传入任何奇怪的包含或变量。
    • 其实有一种方法可以准确返回完整的 URL...answer below 也适用于 Laravel 5
    【解决方案2】:

    Laravel 4.5

    随便用

    Request::fullUrl()
    

    它将返回完整的网址

    您可以使用 str_replace 提取查询字符串

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

    或者您可以使用

    获取所有查询的数组
    Request::query()
    

    Laravel >5.1

    随便用

    $request->fullUrl()
    

    它将返回完整的网址

    您可以使用 str_replace 提取查询字符串

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

    或者您可以使用

    获取所有查询的数组
    $request->query()
    

    【讨论】:

    • 在较新版本的 laravel 中使用 $request 实例而不是静态调用 Request 的函数
    • 在我的例子中,我希望保留查询参数的顺序,但是fullUrl 神秘地改变了我的参数的顺序。我不得不使用纯 php 然后 $actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") 。 "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    • Request::fullUrl() 在 Laravel 4 上完美运行。
    • $request->query() 5.4 中很棒
    【解决方案3】:

    $request->fullUrl() 也可以在你注入 Illumitate\Http\Request 时工作。

    【讨论】:

      【解决方案4】:

      从 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'));
      }
      

      【讨论】:

        【解决方案5】:

        尝试使用以下内容:

        \Request::getRequestUri()
        

        【讨论】:

        • 这应该是公认的答案。它准确地返回了 OP 想要的东西。在 5.2 上运行良好。
        【解决方案6】:
        public functin func_name(Request $request){$reqOutput = $request->getRequestUri();}
        

        【讨论】:

          【解决方案7】:

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

          echo url()->full();
          

          【讨论】:

          • 如果查询中有点,它们将变为下划线,例如nested.foo=bar => nested_foo=bar, \Request::getRequestUri() 给出准确的结果
          【解决方案8】:

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

          $request->getRequestUri()
          

          【讨论】:

            【解决方案9】:

            我找到的最简单的是这个:

            $request->getPathInfo()
            

            【讨论】:

            • 问题是关于获取包含查询字符串的完整路径。该问题已经提到 getPathInfo() 方法不适用于此。
            猜你喜欢
            • 2011-07-10
            • 2018-09-04
            • 1970-01-01
            • 2014-07-19
            • 1970-01-01
            • 2012-08-19
            • 2016-12-31
            • 2013-04-18
            • 2016-09-01
            相关资源
            最近更新 更多