概要
ルートパラメーターは、idなどの値を指定するほか、モデルのインスタンスを直接渡してコントローラーで受け取ることができる。
値を渡して値を受け取る
ルーティング
以下の様にルーティングを設定したとする。
| 1 2 | Requeset::get('/users/{id}', 'UserController@show')   ->name('users.show'); | 
ルーティングは以下のようになる。
| 1 2 3 4 5 6 7 8 | $ php artisan route:list +--------+----------+------------+------------+------------------------------------------+------------+ | Domain | Method   | URI        | Name       | Action                                   | Middleware | +--------+----------+------------+------------+------------------------------------------+------------+ ........ |        | GET|HEAD | users/{id} | users.show | App\Http\Controllers\UserController@show | web        | ........ +--------+----------+------------+------------+------------------------------------------+------------+ | 
ビューでの渡し方
ビューからのルーティングでidなどの値を渡すなら、以下のようにURLで展開させるかroute()ヘルパーの第2引数で指定する。
| 1 2 3 4 5 | <!-- URLで値を展開させる --> <a href="/users/{{ $id }}">プロフィール</a> <!-- route()ヘルパーの第2引数に渡す --> <a href="{{ route('users.show', $id) }}">プロフィール</a> | 
いずれの場合も、以下のようなURLでGETリクエストされる。
| 1 | http://localhost/users/2 ←idの値 | 
ログイン済みユーザーのidを渡す場合、以下のように書ける。
| 1 2 3 4 5 | <!-- URLで値を展開させる --> <a href="/user/{{ \Auth::user()->id }}">プロフィール</a> <!-- route()ヘルパーの第2引数に渡す --> <a href="{{ route('user.show', \Auth::user()->id) }}">プロフィール</a> | 
コントローラーでの受け取り方
コントローラー側でパラメーターを受け取る場合、アクションメソッドの引数にパラメーターが渡されるので、それをそのまま利用すればよい。
| 1 2 3 4 5 6 7 8 9 | class UserController extends Controller {   public function getProfile($id) {     return 'user name:" . \App\User::find($id)->name;   } } // ブラウザー表示例 // user name:user2 | 
モデルのインスタンスのまま渡して受け取る
ルーティング
以下の様にルーティングを設定する。
| 1 2 | Requeset::get('/users/{user}', 'UserController@show')   ->name('user.show'); | 
リソースルーティングで指定するなら以下のとおり。
| 1 2 | Route::resource('users', 'UserController')   ->only(['show']); | 
何れの場合もルーティングは以下のようになる。
| 1 2 3 4 5 6 7 8 | $ php artisan route:list +--------+----------+--------------+------------+------------------------------------------+------------+ | Domain | Method   | URI          | Name       | Action                                   | Middleware | +--------+----------+--------------+------------+------------------------------------------+------------+ ........ |        | GET|HEAD | users/{user} | users.show | App\Http\Controllers\UserController@show | web        | ........ +--------+----------+--------------+------------+------------------------------------------+------------+ | 
ビューでの渡し方
ビューからからのルーティングでモデルのインスタンスを渡す場合も、URLで展開させるかroute()ヘルパーの第2引数で指定する。ここでは認証済みのユーザーインスタンスを渡している。
| 1 2 3 4 5 | <!-- URLで値を展開させる --> <a href="/users/{{ \Auth::user() }}">プロフィール</a> <!-- route()ヘルパーの第2引数に渡す --> <a href="{{ route('users.show', \Auth::user()) }}">プロフィール</a> | 
インスタンスを渡しても、ルートパラメーターはidの値になる。
| 1 | http://localhost/users/2 | 
コントローラーでの受け取り方
コントローラーのアクションでは、引数にモデルクラスのメソッドインジェクションを適用して、idに対応したインスタンスを受け取る。
| 1 2 3 4 5 6 7 8 9 | class UserController extends Controller {   public function getProfile(\App\User $user) {     return 'user name:" . $user->name;   } } // ブラウザー表示例 // user name:user2 | 
コントローラーの冒頭でモデルをuse指定してもよい。
| 1 2 3 4 5 6 7 8 9 10 11 12 | use App\User; // user \App\Userでもよい class UserController extends Controller {   public function getProfile(User $user) {     return 'user name:" . $user->name;   } } // ブラウザー表示例 // user name:user2 |