PHP项目Laravel当前路由获取方式

wen PHP项目 6

本文目录导读:

PHP项目Laravel当前路由获取方式

  1. 获取当前路由名称
  2. 获取当前路由URI
  3. 获取当前路由Action
  4. 获取当前路由实例
  5. 辅助函数方式
  6. 完整的判断示例
  7. 在中间件中使用
  8. 注意事项

在 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

这些方法可以根据具体需求选择使用,最常见的场景是获取路由名称来执行条件逻辑。

抱歉,评论功能暂时关闭!