# 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 両方定義することが手間ですね。その場合、match と any が使えます。
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数字アルファベット制約whereUuidUUID 制約
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]+');
}