简介
laravel 路由都在 routes 目录中,由框架自动加载,其中 routes / web.php
用于定义 web 界面的路由。
定义路由
Route::get('user', 'UserController@index');
路由分组
用的是手册中的「路由前缀」
Route::prefix('admin')->group(function () {
Route::get('user', 'UserController@index');
});
路由命名
在路由定义上调用 name
方法可以指定路由名称,为指定路由生成 URL 或 重定向时提供方便。
Route::get('user', 'UserController@index')->name('user');
路由参数
有时需要指定路由参数,可以定义一个或多个参数,要确保路由的相应变量有默认值:
//一个参数
Route::get('user/{id}','MsgController@index')->name('index');
//多个参数
Route::get('posts/{post}/comments/{comment}', 'MsgController@index')->name('index');
如果希望这个参数是可选的,可以在参数后面加上 ?
标记实现:
Route::get('/gbook/index/{id?}', 'MsgController@index')->name('index');
获得路由
为路由指定名称后,可以使得全局函数 route
来生成路由链接或重定向到该路由
// 生成 URL...
$url = route('profile');
// 生成重定向...
return redirect()->route('profile');
路由模型绑定
当向路由或控制器行为注入模型 ID 时,就需要查询这个 ID 对应的模型。
Laravel 为路由模型绑定提供了一个直接自动将模型实例注入到路由中的方法。例如,你可以注入与给定 ID 匹配的整个 User 模型实例,而不是注入用户的 ID。
试图解释:路由如果有 ID ,可以隐性依赖注入,可以直接获得这个 ID 的数据