![](/img/trans.png)
[英]Get current route name in AppServiceProvider in Laravel 5.1
[英]Laravel 5.1 - get current route
我正在开发一个为每个视图自动获取资产(.css,.js)的函数。 因此,对于“ http://mywebsite.com/displayitems”、/home、/about等来说,它可以正常工作。
但是,因为我使用$_SERVER['REQUEST_URI']
编写了函数,所以当我使用/displayitems/1
之类的路由时,由于路由中的“ / 1”,我想到了一个问题。
当时在Laravel 4.x中,我有一个很棒的方法,但是可悲的是,它在Laravel 5.4中的工作方式并不相同。
我一直在互联网上寻找一种获得当前路线的好方法,但是没有成功。 问题是我必须忽略请求URL中的任何参数。
如果有人有线索,或者我做错了,还有完全不同的更好方法吗?
PS我当前的功能:
public static function getAllRouteAssets() {
$route = $_SERVER['REQUEST_URI'];
if($route == "/") {
$tag = '<link href="' . asset("assets/css/pages/home.css") . '" rel="stylesheet" type="text/css"/>';
}
else {
// CSS
$tag = '<link href="' . asset("assets/css/pages" . $route . ".css") . '" rel="stylesheet" type="text/css"/>';
}
echo $tag;
//TODO: Check if file exists, homepage condition, js...
}
您可以尝试以下方法:
// Add the following (`use Illuminate\Http\Request`) statement at top your the class
public static function getAllRouteAssets(Request $request)
{
// Get the current route
$currentRoute = $request->route();
}
更新(从IoC / Service容器获取Request实例,并调用route()
以获取当前路由):
app('request')->route(); // Current route has been retrieved
如果要将当前路由作为参数传递给getAllRouteAssets
方法,则必须更改typehint
或传递Request
并从getAllRouteAssets
方法中调用route
方法。
我知道这有点老了,但是有一种方法可以为您提供整个查询路径:
$request->getPathInfo();
但是,请注意,如果您也要获取查询字符串,则此方法将无效。 (仅供参考,Laravel 5默认不支持查询字符串)
您可以通过以下方式分别从查询字符串中获取GET变量:
$request->input('id');
例:
http://laravel.com/api/users/?id=123
将使用getPathInfo()
返回/api/users
,使用$request->input('id');
返回123
$request->input('id');
我正在使用Laravel 5.5.20。 我还需要不使用get参数来获取路由的一部分。 在web.php中定义的路由没有问号(?),例如:
Route::get('board/{param_1}/{param_2}', 'BoardController@index');
在那种情况下,我没有在Route类中看到直接方法来获得没有url参数的零件。 这是我获得静态零件(/板)的方式:
... use Illuminate\\Support\\Facades\\Route; .. $staticPrefix = Route::getCurrentRequest()->route()->getCompiled()->getStaticPrefix(); ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.