0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Laravel6.x]ルーティング 備忘録

Posted at

はじめに

この記事はプログラミング初学者による備忘録用の記事であり、また、少しでも他の初学者のお役に立てればと思い書いています。

今回は、Laravel6.x ルーティングに関して再度インプットを行いましたので、初見及び忘れそうな知識について記録しておきたいと思います。

※知識が増え次第、随時更新

間違いなどがございましたら、ご指摘のほどよろしくお願い致します。

目次

・グローバル制約
・フォールバックルート
・名前付きルートへのURLを生成
・擬似フォームメソッド

グローバル制約

グローバル制約とは
正規表現でルートパラメータを制約したい場合は、RouteServiceProviderのbootメソッドの中で、patternメソッドを使いパターンを定義する。

使い方
正規表現をルート定義したルートパラメータに適応させたい場合にapp/Providers/RouteServiceProvider.phpのbootメソッド内で設定を行うようにする。

app/Providers/RouteServiceProvider.php
/**
 * ルートモデル結合、パターンフィルタなどの定義
 *
 * @return void
 */
public function boot()
{
    Route::pattern('id', '[0-9]+'); //追記する
    //このように指定することでパラメータ名を使用している全ルートで自動的に提供される

    parent::boot();
}

web.php
//略
Route::get('user/{id}', function ($id) {
    // {id}が数値の場合のみ実行されるようになる
});

補足
ルーティングに直接バリデーションをつけることも可能

web.php
Route::get('foo/{id?}', 'FooController@index')->where('id', '[0-9]+');

フォールバックルート

フォールバックルートとは
受け取ったリクエストが設定したRouteと一致しない場合に適用されるルーティングのこと

使い方
基本的に処理できないリクエストに対しては自動的に"404"ページが表示されるが、routes/web.phpファイルにフォールバックルートが定義されていれば、webミドルウェアグループの中のすべてのミドルウェアで、フォールバックルートが適用されカスタマイズした特定のページ表示をすることができる。

web.php
//この記述を入れたい場合はルート登録で一番最後に記述する
Route::fallback(function () {
    //
});

名前付きルートへのURLを生成する(パラメータ定義)

名前付きルートの生成とは
名前付きルートは特定のルートへのURLを生成したり、リダイレクトしたりする場合にメリットが生まれる。ルート定義にnameメソッドをチェーンすることで、そのルートに対して名前をつけることができる。

ルートに一度名前を付ければ、その名前をグローバルなroute関数で使用すれば、URLを生成したり、リダイレクトすることが可能になる。

使い方
ルートでパラメータを定義している場合は、route関数の第2引数としてパラメータを渡すことで、指定されたパラメーターが自動的にURLの正しい場所へ埋め込まれる。

//名前付きルートにする
Route::get('sample/test', function () {
    //
})->name('test');

// URLの生成
$url = route('test');

// リダイレクトの生成
return redirect()->route('test');

//view表示ルートの指定
return view(route('test'));


//パラメータ有り名前付きルートにする
Route::get('sample/{id}/test', function ($id) {
    //
})->name('test');

//URLの生成(route関数の第2引数としてパラメーターを指定する)
$url = route('test', ['id' => 1]);

//配列に新たなパラメータを追記した場合、その[キー => バリュー]は自動的にクエリ文字列として生成されるURLへ追加される。
$url = route('test', ['id' => 1, 'name' => 'hal']);

擬似フォームメソッド

擬似フォームメソッドとは
HTMLフォームはPUT、PATCH、DELETEアクションをサポートしていない。
従って、、HTMLフォーム上でPUT、PATCH、DELETEルートを定義する時、擬似フォームメソッドと呼ばれるものを使う必要がある。

使い方
フォームに_method隠しフィールドを追加する必要がある。
_methodフィールドとして送られた値は、HTTPリクエストメソッドとして使用される。
_methodフィールドを生成するために、@methodBladeディレクティブを使用することもある。

//@method Bladeディレクティブの使用例
<form action="{{ route('sample.destroy', compact('sample')) }}" method="POST">
    @method('DELETE')
    @csrf
</form>
//formタグではmethod=POSTを指定、タグ内では@method()でアクションを指定する

参考文献

Laravel6.x ルーティング

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?