# laravel method の基本 get post put options

Laravel Request で使えるメソッド

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

post で使うときもあるけど、データポストされない時に get としても使い場合
get,post 両方定義することが手間ですね。その場合、matchany が使えます。

Route::match(array('GET','POST'),'login', 'AuthController@login');

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

Route::any('/', function () {});

参考
How to route GET and POST for same pattern in Laravel? (opens new window)

Laravel 利用可能なルーターメソッド (opens new window)

# Laravel Route 制約小技

ルート設定でパターン制約

  • whereNumber 数字制約
  • whereAlpha アルファベット制約
  • whereAlphaNumeric 数字アルファベット制約
  • whereUuid UUID 制約
Route::get('/user/{id}/{name}', function ($id, $name) {
    // 処理
})->whereNumber('id')->whereAlpha('name');

Route::get('/user/{name}', function ($name) {
    // 処理
})->whereAlphaNumeric('name');

Route::get('/user/{id}', function ($id) {
    // 処理
})->whereUuid('id');

// パラメータ存在しない可能性がある
Route::get('/user/{id?}', function (Request $request, $id = null) {
    return 'User '.$id;
});

# 正規表現で制約

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

受けた Request が制約パターンと一致しない場合 404 ページに飛ばされます。

# グローバルで制約する際に使われる RouteServiceProvider 設定

boot -> pattern メソッドに定義すれば、ルートのグローバル適用されます。

App\Providers\RouteServiceProvider.php

public function boot()
{
    Route::pattern('id', '[0-9]+');
}
2021-12-21

同じタグを持つ記事をピックアップしました。