こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。
この記事では、 PHPのフレームワークの1つであるLaravelでクエリ文字列でURLからパラメータを取得する方法についてを丁寧に解説していきます。
ルートパラメータでURLからパラメータを取得する方法は以下の記事をご参考ください。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Laravelのバージョン | 8.10.0 |
この記事では
C:\Laravel\LaravelSample
配下にLaravelのプロジェクトを作成しています。
クエリ文字列とは
クエリ文字列とは
http://localhost:8000/sample?test=123
というように値を渡す方法です。
クエリ文字列の値を取得する場合は、コントローラーのみ特別な記述が必要です。
web.phpには必要ありません。
コントローラーでクエリ文字列を取得する方法は2パターンあります。
- コントローラーの関数にrequest引数を与える
- コントローラーの関数内でrequest関数を呼ぶ
です。
どちらのパターンでも
1 |
use Illuminate\Http\Request; |
を宣言する必要があります。
それぞれ使い方を解説していきます。
パターンその1:コントローラーの関数にrequest引数を与える
コントローラーの関数にrequest引数を与えるとは、以下のように記載します。
1 2 3 4 |
public function test(Request $request){ $result = $request->test; // } |
上記の例だと
http://localhost:8000/sample?test=123
でアクセスした場合、resultには’123’という文字列が返されます。
もし、指定したクエリ文字の名前を間違えた、指定しなかった場合はエラーとならず空が返されます。
パターンその2:コントローラーの関数内でrequest関数を呼ぶ
コントローラーの関数内でrequest関数を呼ぶとは、以下のように記載します。
1 2 3 4 |
public function test(){ $result = request('name'); // } |
上記の例だと
http://localhost:8000/sample?test=456
でアクセスした場合、resultには’456’という文字列が返されます。
もし、指定したクエリ文字の名前を間違えた、指定しなかった場合はこのパターンもエラーとならず空が返されます。
では、次の章で実際に使ってみます。
クエリ文字列でURLからパラメータを取得するやり方を解説するプログラムの概要
クエリ文字列でURLからパラメータを取得するやり方を解説するプログラムは、
- コントローラー
- Bladeビュー
- web.php
3つを使います。
コントローラーは名前を【SampleController.php】とし、クエリ文字列からパラメータを取得し、Bladeビューに渡します。
- コントローラーの関数にrequest引数を与える
- コントローラーの関数内でrequest関数を呼ぶ
上記どちらのパターンも使います。
コントローラーからBladeビューに値を渡す方法については、こちらの記事をご参考ください。
Bladeビューは名前を【reqsample.blade.php】viewsディレクトリ直下に格納します。
web.phpには、【http://〇〇.〇〇.〇〇:8000/reqsample】でアクセスした場合、SampleControllerの関数を呼ぶように定義します。
ちなみにweb.phpとは、ルーティングを定義することができるファイルです。
詳しくはこちらの記事をご参考ください。
コントローラー:SampleController.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class SampleController extends Controller { public function showSample(Request $request){ $name = request('name'); $age = $request->age; return view('reqsample', compact('name', 'age')); } } |
Bladeビュー:reqsample.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>クエリ文字列サンプルページ</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('/reqsample', [SampleController::class, 'showSample']); |
実行して確認
クエリ文字列の値を取得して画面に表示することができるのかを実行して確認します。
Laravelでサーバーを立ち上げるコマンドは
1 |
php artisan serve |
です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。
今回、
- name:【mike】を設定
- age:【48】を設定
というクエリ文字列を与えます。
- http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/reqsample?name=mike&age=48
※コマンドプロンプトに記載されているURL - http://localhost:8000/reqsample?name=mike&age=48
どちらかのURLにアクセスすれば、値を取得できていることが確認できます!
まとめ:クエリ文字列でURLからパラメータを取得してみよう
以上がLaravelでクエリ文字列でURLからパラメータを取得するやり方の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント