PHP
laravel
laravel5.5

Laravel5.5でのルーティング方法一覧

Laravel5.5でのルーティング方法一覧

ベーシック

Route::get('/user', 'UsersController@index');
Route::post('/user', 'UsersController@index');
Route::put('/user', 'UsersController@index');
Route::patch('/user', 'UsersController@index');
Route::delete('/user', 'UsersController@index');
Route::options('/user', 'UsersController@index');

GETもPOSTも対応(複数対応)

Route::match(['get', 'post'], '/user', function () {
    'UsersController@index'
});

全HTTP動詞に対応する

Route::any('/user', function () {
    'UsersController@index'
});

リダイレクト

Route::redirect('/user', '/there', 301);

ルートからビューを返すだけの場合

最初の引数にURIを取り、ビュー名は第2引数

Route::view('/user', 'user');

#配列も渡す
Route::view('/user', 'user', ['name' => 'Taylor']);

必須パラメータ

#URLからユーザーIDを取り出したい場合
Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

任意パラメータ

パラメータ名の後に?を付けると、任意指定のパラメータになります。対応するルートの引数に、デフォルト値を必ず付けてください。

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

正規表現制約

whereメソッドを使って、ルートパラメータのフォーマットを制約できます。

Route::get('user/{name}', function ($name) {
    //
})->where('name', '[A-Za-z]+');

Route::get('user/{id}', function ($id) {
    //
})->where('id', '[0-9]+');

Route::get('user/{id}/{name}', function ($id, $name) {
    //
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

グローバル制約

指定した正規表現でいつもルートパラメータを制約したい場合は、patternメソッドを使ってください。

/**
 * ルートモデル結合、パターンフィルタなどの定義
 *
 * @return void
 */
public function boot()
{
    Route::pattern('id', '[0-9]+');

    parent::boot();
}

名前付きルート

ルート定義にnameメソッドをチェーンすることで、そのルートに名前がつけられます。

Route::get('user/profile', 'UserController@showProfile')->name('profile');

ミドルウェア

Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // firstとsecondミドルウェアを使用
    });

    Route::get('user/profile', function () {
        // firstとsecondミドルウェアを使用
    });
});

ルートプレフィックス

グループ内の全ルートのURIにadminを付けたければ、次のように指定します。

Route::prefix('admin')->group(function () {
    Route::get('users', function () {
        // Matches The "/admin/users" URL
    });
});

現在のルートへのアクセス

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();