1、基本路由
构建最基本的路由只需要一个 URI 与一个 闭包
,这里提供了一个非常简单优雅的定义路由的方法:
Route::get('foo', function () {
return 'Hello World';
});
Route::get('/user', 'UsersController@index');
Route::get('user/profile', 'UserController@showProfile')->name('profile');
2、路由组
路由组允许共享路由属性,例如中间件和命名空间等,我们没有必要为每个路由单独设置共有属性,共有属性会以数组的形式放到 Route::group
方法的第一个参数中。
中间件:
Route::middleware(['first', 'second'])->group(function () {
Route::get('/', function () {
// 使用 `first` 和 `second` 中间件
});
});
为控制器组指定公共的 PHP
命名空间。这时使用 namespace
参数来指定组内所有控制器的公共命名空间:
Route::namespace('Admin')->group(function () {
// 在 "App\Http\Controllers\Admin" 命名空间下的控制器
});
绑定子域名:
Route::domain('{account}.myapp.com')->group(function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});
路由前缀:
Route::prefix('admin')->group(function () {
Route::get('users', function () {
// 匹配包含 "/admin/users" 的 URL
});
});
3、资源路由
Route::resource('photos', 'PhotoController');
这个路由声明会创建多个路由来处理各种各样的资源操作。前面生成的控制器已经包含了这些操作的方法,同时还包括了 HTTP 动作和操作 URI 的注释。
动作 | URI | 操作 | 路由名称 |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
当声明一个资源路由时,你可以指定控制器处理部分操作,而不必使用全部默认操作:
Route::resource('photo', 'PhotoController', ['only' => [
'index', 'show'
]]);
Route::resource('photo', 'PhotoController', ['except' => [
'create', 'store', 'update', 'destroy'
]]);
资源路由命名:
Route::resource('photo', 'PhotoController', ['names' => ['create' => 'photo.build']]);
资源路由指定路由名前缀:
Route::resource('admin/article', 'ArticleController', ['as' => 'admin']);