本文目录导读:

在 Laravel 中获取当前路由信息有多种方式,以下是常用的方法:
获取当前路由名称
// 在控制器或视图中
$routeName = request()->route()->getName();
// 或
$routeName = Route::currentRouteName();
// 或
$routeName = \Illuminate\Support\Facades\Route::currentRouteName();
// 示例
if ($routeName == 'user.profile') {
// 执行特定逻辑
}
获取当前路由URI
// 获取当前请求的URI(不含域名) $uri = request()->path(); // 或 $uri = Route::current()->uri(); // 获取完整URL $fullUrl = request()->fullUrl(); $url = request()->url();
获取当前路由Action
// 获取控制器@方法 $action = Route::currentRouteAction(); // 返回如:App\Http\Controllers\UserController@profile // 获取路由参数 $parameters = Route::current()->parameters();
获取当前路由实例
// 获取当前路由对象 $route = Route::current(); // 或 $route = request()->route(); // 获取路由名称(如果未命名则返回null) $name = $route->getName();
辅助函数方式
// 使用 Route 门面 use Illuminate\Support\Facades\Route; $currentRouteName = Route::currentRouteName(); $currentUri = Route::current()->uri(); $currentAction = Route::currentRouteAction(); // 使用 request() 辅助函数 $currentPath = request()->path();
完整的判断示例
// 检查当前路由
if (Route::is('admin.*')) {
// 是admin前缀的路由
}
if (Route::currentRouteNamed('user.show')) {
// 是user.show路由
}
// 获取路由参数
$userId = request()->route('user');
// 或
$userId = Route::input('user');
在中间件中使用
public function handle($request, Closure $next)
{
$route = $request->route();
$routeName = $route->getName();
// 自定义逻辑
return $next($request);
}
注意事项
- 必须确保路由已经经过中间件处理(
SubstituteBindings中间件)才能正确获取 - 如果在 ServiceProvider 中使用,建议在
boot方法中,并确保路由已注册 - 对于未命名的路由,
getName()会返回null
这些方法可以根据具体需求选择使用,最常见的场景是获取路由名称来执行条件逻辑。