こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。
この記事では、 PHPのフレームワークの1つであるLaravelでルートパラメータでURLからパラメータを取得する方法についてを丁寧に解説していきます。
クエリ文字列ででURLからパラメータを取得する方法は以下の記事をご参考ください。
前提条件:実行環境について
実行環境はWindowsで、Laravelのバージョンは【8.10.0】です。
この記事では
C:\Laravel\LaravelSample
配下にLaravelのプロジェクトを作成しています。
Laravelのインストールのやり方については、以下の記事をご参考ください。
ルートパラメータとは
ルートパラメータとは
http://localhost:8000/sample/test
というURLにアクセスした場合、【test】をパラメータとして渡すやり方です。
web.phpのルーティングの設定方法は、↓のようにします。
1 |
Route::get('/sample/{test}', [SampleController::class, 'show']); |
ルートパラメータとして渡したいものを{}で囲います。
ルートパラメータは、必須と任意の設定にすることができます。
違いは【?】がパラメータ名の最後にあるかないかです。
書き方のサンプルは以下になります。
必須 | {test} |
---|---|
任意 | {test?} |
ルートパラメータに設定した値は、そのままコントローラーやビューに渡されます。
コントローラーでルートパラメータを取得するには
1 2 3 |
public function show($test){ // } |
のように関数の引数に指定してあげれば、取得することができます。
ちなみにルートパラメータは複数指定することも可能です。
複数指定する場合はweb.phpのルーティングを
1 |
Route::get('/sample/{test}/{hogehoge}', [SampleController::class, 'show']); |
というように【/】でつなげてあげればOKです!
では、次の章で実際に使ってみます。
ルートパラメータでURLからパラメータを取得するやり方を解説するプログラムの概要
ルートパラメータでURLからパラメータを取得するやり方を解説するプログラムは、
- コントローラー
- Bladeビュー
- routes\web.php
3つを使います。
コントローラーは名前を【SampleController.php】とし、ルートパラメータを取得し、Bladeビューに渡します。
コントローラーからBladeビューに値を渡す方法については、こちらの記事をご参考ください。
Bladeビューは名前を【paramample.blade.php】viewsディレクトリ直下に格納します。
routes\web.phpには、ルートパラメータが2つ設定されている【http://〇〇.〇〇.〇〇:8000/paramsample】をルーティングします。
ルートパラメータの2つのうち、1つは必須、もう1つを任意として、【SampleController】を実行するよう設定します。
SampleController.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; class SampleController extends Controller { public function showName($name, $age = ''){ return view('paramample', compact('name', 'age')); } } |
paramample.blade.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <h1>URLパラメータサンプルページ</h1> <p>nameパラメータ:{{$name}}</p> <p>ageパラメータ:{{$age}}</p> </body> </html> |
web.phpのサンプルプログラム
1 2 3 4 5 6 |
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SampleController; Route::get('/paramsample/{name}/{age?}', [SampleController::class, 'showName']); |
実行して確認
ルートパラメータの値を取得して画面に表示することができるのかを実行して確認します。
Laravelでサーバーを立ち上げるコマンドは
1 |
php artisan serve |
です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。
今回、
- name:【tanaka】を設定
- age:設定しない
というルートパラメータを与えます。
- http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/paramsample/tanaka/
※コマンドプロンプトに記載されているURL - http://localhost:8000/paramsample/tanaka/
どちらかのURLにアクセスすれば、値を取得できていることが確認できます!
まとめ:ルートパラメータでURLからパラメータを取得してみよう
以上がLaravelでルートパラメータでURLからパラメータを取得するやり方の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント