Laravel-路由

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章