この記事ではLaravelのrouteヘルパ関数についての記事です。
route()を使ってURLを生成、取得する流れを紹介します。
その中でのオプションについても詳しく解説していきます。
route()でURLを取得する流れ
まずはroute()でURLを取得する流れを簡単に紹介します。
ルーティングで名前付きルートを定義する
route()でURLを生成するためにはルーティングで名前付きルートを定義する必要があります。
// web.phpでの名前付きルート定義
Route::get('/user', 'UserController@index')->name('user.index');
このようにnameメソッドを使用することで、ルートの名前を指定できます。
名前付きルートのURL生成
ルーティングで設定した名前付きルートでURLを生成するにはルートの名前を指定するだけです。
$url = route('user.index');
echo $url;
// https://test.com/user
名前付きルートを使用することで、URL生成が簡単に行うことができるようになります。
パラメータ指定がある場合
ルートにパラメータの指定がある場合をみてみましょう。
Route::get('/user/{id}', 'UserController@show')->name('user.show');
このように各ユーザーの情報を表示するページのルーティングを行いました。
ユーザーのidを指定することでそのユーザーのモデルを取得できます。
この機能をルートモデルバインディングと言います。
詳しくはこちらの記事を参考にしてみてください。
パラメータがある場合のURL生成はこちらになります。
$url1 = route('user.index', ['id' => 1]);
$url2 = route('user.index', [1]);
echo $url1;
// https://test.com/user/1
echo $url2;
// https://test.com/user/1
パラメータを2番目の引数としてroute
関数に渡します。
キー/バリューのセットで渡すか単純にパラメータを指定することで生成するURLに挿入されます。
redirectヘルパ関数でも使用可能
リダイレクトをする際に使用するredirectヘルパ関数にもrouteは使えます。
return redirect()->route('user.index');
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!
引数で相対パスと絶対パスを使い分ける
生成するURLを相対パスと絶対パスで使い分けることも可能です。
// 相対パスを使用してURLを生成
$relativeUrl = route('user.show', ['id' => 1], false);
// 絶対パスを使用してURLを生成
$absoluteUrl = route('user.show', ['id' => 1], true);
パラメータがある場合はその後の引数を使用します。
falseで相対パス、trueで絶対パスが生成されます。
trueの場合は省略可能なのでデフォルトは絶対パスになります。
ルートパラメータのオプションについて
ルートパラメータがオプションになっている場合も同様です。
Route::get('/user/{name?}', 'UserController@show')->name('user.show');
この場合も同じように名前付きルートの「user.show」で使用できます。
ルートパラメータのオプションについて詳しくはこちら。
Laravelルーティングのオプションパラメータ「?」の活用法と設定方法
route()を使って効率的にルーティングをしよう
いかがだったでしょうか。
名前付きルートを使用することで、URL生成やリダイレクトの処理が簡単に行えます。
分かりやすい名前付きルートにすることで他の開発者にもページ遷移が理解しやすくなります。
開発方針にもよりますが、わかりやすいルートを使ってroute()を活用しましょう。