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']);