在 Laravel 中,多种方法可以获取当前 URL、请求路径、参数等信息。
使用 URL 类
-
URL::full();和url()->full();:这两个方法返回当前请求的完整 URL,包括查询字符串。
-
URL::current();和url()->current();:这两个方法返回当前请求的 URL,但不包括查询字符串。
-
URL::previous();和url()->previous();:如果浏览器发送了Referer头,则此方法将返回之前的 URL。否则,它将返回null。
-
URL::secureAsset(‘path/to/asset’);:返回指定资源的 HTTPS URL。如果应用配置为使用 HTTPS,它将使用 HTTPS URL;否则,它将使用普通的 HTTP URL。
使用 Request 类
-
Request::url();和$request->url();:返回当前请求的完整 URL,包括查询字符串。
-
Request::path();和$request->path();:返回当前请求的 URI 路径,不包括查询字符串。
-
Request::getRequestUri();和$request->getRequestUri();:返回请求 URI(路径和查询字符串)。
-
Request::getUri();和$request->getUri();:返回请求 URI 的完整字符串,包括 scheme、host、端口(如果非默认)、路径和查询字符串。
-
$request->route()->getAction();:返回当前路由操作的相关信息,通常用于获取控制器和方法的名称等。
使用 Input 类(不推荐)
在 Laravel 中,Input类已经被废弃,取而代之的是Request类的各种方法。因此,不建议使用Input::url();,而应该使用Request类的方法。
使用$_SERVER
-
$_SERVER[‘REQUEST_URI’]:包含当前请求的 URI 路径,可能包括查询字符串。
-
$_SERVER[‘HTTP_HOST’]:包含当前请求的主机名和端口号(如果非默认)。
使用Request类获取$_SERVER信息
-
Request::server();和$request->server();:返回包含$_SERVER数组所有信息的数组。
-
Request::server(‘HTTP_HOST’);和$request->server(‘HTTP_HOST’);:返回$_SERVER数组中特定键的值。
注意事项
-
当在控制器或路由闭包中使用这些方法时,通常会将Request类的实例作为参数传递给方法或闭包,因此你可以直接使用$request变量来调用其方法。
-
在 Laravel 的服务容器和依赖注入的帮助下,你可以轻松地访问Request类的实例,而无需每次都从全局帮助函数或URLFacade 中获取。
-
在使用URLFacade 或全局帮助函数时,请确保你已经正确配置了你的应用 URL(在.env文件中的APP_URL配置项)。