信息发布→ 登录 注册 退出

Laravel路由怎么定义_Laravel核心路由系统完全入门指南

发布时间:2025-12-22

点击量:
Laravel路由系统核心包括:1. 基本路由定义支持GET、POST等HTTP方法;2. 动态参数可加正则约束;3. 命名路由便于URL生成;4. 分组功能统一设置中间件、前缀和命名空间;5. 路由指向控制器方法,支持资源路由自动生成CRUD对应路径;6. 提供视图直接返回和重定向路由快捷方式。掌握这些可构建清晰、可维护的应用结构。

Laravel 的路由系统是整个框架的核心之一,它负责将用户的请求映射到对应的控制器或闭包函数。定义路由非常直观且灵活,适合从小型项目到大型应用的各种需求。

基本路由定义

Laravel 中的路由定义主要在 routes/web.php(用于 Web 页面)和 routes/api.php(用于无状态 API)文件中进行。

最基本的路由使用 Route 门面来绑定 HTTP 请求方法与回调函数:

  • Route::get('/home', function () { return 'Hello World'; }); —— 定义一个 GET 请求
  • Route::post('/submit', function () { return 'Form submitted'; }); —— 处理表单提交
  • Route::put('/update', ...);Route::delete('/remove', ...); 对应其他 HTTP 方法
  • Route::match(['get', 'post'], '/login', function () { ... }); —— 匹配多种方法
  • Route::any('/any', function () { ... }); —— 响应任意 HTTP 方法(慎用)

路由参数与约束

实际开发中,URL 往往包含动态部分,比如用户 ID 或文章标题。Laravel 支持带参数的路由:

  • Route::get('/user/{id}', function ($id) { return "User {$id}"; });
  • 多个参数:Route::get('/post/{year}/{month}', function ($year, $month) { ... });

你还可以对参数添加正则约束,确保数据格式正确:

  • Route::get('/user/{id}', ...)->where('id', '[0-9]+'); —— id 必须为数字
  • ->where(['id' => '[0-9]+', 'name' => '[a-z]+']) —— 多个参数约束

命名路由与生成 URL

给路由起名字可以让你在视图或代码中更方便地生成链接,而不依赖硬编码路径:

  • Route::get('/dashboard', function () { ... })->name('dashboard');
  • 在 Blade 模板中使用:route('dashboard') 输出完整 URL
  • 带参数的命名路由:route('user.profile', ['id' => 123])

路由分组与中间件

为了组织结构清晰,Laravel 提供了路由分组功能,可统一设置中间件、命名空间、前缀等:

  • 添加中间件:
    Route::middleware(['auth'])->group(function () {
    Route::get('/admin/profile', 'AdminController@profile');
    });
  • 添加前缀:
    Route::prefix('api/v1')->group(function () {
    Route::get('users', 'Api\UserController@index');
    });
  • 命名空间(常用于控制器):
    Route::namespace('Admin')->group(...)

路由指向控制器

大多数情况下,路由会指向控制器方法而不是闭包:

  • Route::get('/users', 'UserController@index'); —— Laravel 8 以前语法
  • Laravel 8+ 推荐使用类名引用:
    use App\Http\Controllers\UserController;
    Route::get('/users', [UserController::class, 'index']);

资源路由(RESTful 路由)

对于标准的 CRUD 操作,Laravel 提供了资源路由来自动生成 7 个常用路由:

  • Route::resource('photos', PhotoController::class);
  • 自动生成 index, create, store, show, edit, update, destroy 路由
  • 也可指定只生成部分动作:->only(['index', 'show'])->except([...])

重定向路由与视图路由

有些页面只是简单返回视图或做跳转,Laravel 提供了快捷方式:

  • Route::view('/about', 'pages.about'); // 直接返回视图
  • Route::redirect('/here', '/there'); // 302 重定向
  • Route::permanentRedirect('/old', '/new'); // 301 永久重定向

基本上就这些。掌握这些核心概念后,你已经能熟练使用 Laravel 的路由系统构建清晰、可维护的应用结构。不复杂但容易忽略细节,比如命名和约束,建议在项目初期就规范好路由设计。

标签:# 闭包  # 跳转  # 还可  # 你已经  # 而不  # 也可  # 推荐使用  # 快捷方式  # 多个  # 自动生成  # 重定向  # http  # function  # delete  # php  # Namespace  # class  # 命名空间  # Resource  # 中间件  # restful  # red  # 表单提交  # 路由  # 回调函数  # app  # 编码  # laravel  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!