32
31

More than 5 years have passed since last update.

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

Posted at

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();
32
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
31