こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。
この記事では、 PHPのフレームワークの1つであるLaravelで画面で入力した内容をRequestを使って遷移先の画面に表示する方法を丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Laravelのバージョン | 8.10.0 |
この記事では
C:\Laravel\LaravelSample
配下にLaravelのプロジェクトを作成しています。
- テキストボックス
- ボタン
を表示するために、Formファザードを使用しています。
インストールするやり方は、以下の記事をご参考ください。
画面で入力した内容をRequestを使って遷移先の画面に表示する方法
画面で入力した内容をRequestを使って遷移先の画面に表示する方法を解説します。
- 画面で入力された値を渡す方法
- コントローラーでRequestで渡された値を取得する方法
という順番で解説します。
画面で入力された値を渡す方法
BladeビューでFormタグを作成するには、Formファザードを使い、
- method
- url
を指定します。
テキストボックスはForm::openのネストの中で設定します。
以下は指定のサンプルです。
1 2 3 4 |
{{Form::open(['method' => 'get', 'url' => 'sample'])}} {{Form::text('user_name', '', ['id' => 'sample'])}} {{Form::button('登録', ['type' => 'button'])}} {{Form::close()}} |
Formファザードでテキストボックスを作成する方法とコントローラーへのルーティングの設定は、以下の記事をご参考ください。
【Laravel】Formファザードでテキストボックスを作成するForm::textを解説します
コントローラーへのルーティングの設定
【Laravel】コントローラーへのルーティングの設定の仕方を解説します
コントローラーでRequestで渡された値を取得する方法
コントローラーでRequestで渡された値を取得するには、メソッドの引数にRequestを設定し、そのRequestをinput関数を使って値を取得します。
以下は指定のサンプルです。
Requestを使うためには
1 |
use Illuminate\Http\Request; |
をuseする必要があります。
コントローラーからBladeビューに値を渡すには
1 |
return view('printsample', ['sample' => 'サンプル', 'test' => 'test']); |
と、view関数の第一引数に遷移先のBladeビュー、第二引数に渡したい値を連想配列で設定します。
パラメータを取得する方法とコントローラーからBladeビューに値を渡す詳細な解説については、こちらの記事をご参考ください。
【Laravel】クエリ文字列でURLからパラメータを取得する方法について解説します
コントローラーからBladeビューに値を渡す
【Laravel】コントローラーからBladeビューに値を渡す方法を解説します
では、次の章で実際に使ってみます。
画面で入力した内容をRequestを使って遷移先の画面に表示するやり方を解説するプログラムの概要
画面で入力した内容をRequestを使って遷移先の画面に表示するやり方を解説するプログラムは、
- コントローラー
- 入力用のBladeビュー
- 出力用のBladeビュー
- web.php
4つを使います。
コントローラーは名前を【SampleController.php】とし、Requestから入力値を取得し、出力用のBladeビューに渡します。
Bladeビューは
- 入力用:sample.blade.php
- 出力用:sampletransition.blade.php
とし、どちらもviewsディレクトリ直下に格納します。
入力用の【sample.blade.php】は、ボタンを押すと【sampletransition】が走るようルートを設定します。
web.phpには、以下の内容で定義します。
アクセスするURI | 呼ぶコントローラー | どういう関数を呼ぶのか |
---|---|---|
http://〇〇.〇〇.〇〇:8000/sample | SampleController | 入力用の【sample.blade.php】を表示する |
http://〇〇.〇〇.〇〇:8000/sampletransition | SampleController | 出力用の【sampletransition.blade.php】を表示する |
ちなみにweb.phpとは、ルーティングを定義することができるファイルです。
詳しくはこちらの記事をご参考ください。
コントローラー:SampleController.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class SampleController extends Controller { public function sample(Request $request){ $sample = $request->input('sample'); return view('sample', compact('sample')); } public function showPage(Request $request){ $userName = $request->input('user_name'); $age = $request->input('age'); return view('sampletransition', compact('userName', 'age')); } } |
入力用Bladeビュー:sample.blade.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <h1>入力用サンプルページ</h1> {{Form::open(['method' => 'get', 'url' => 'sampletransition'])}} <p>ユーザー名:{{Form::text('user_name', '', ['id' => 'username'])}}</p> <p>年齢:{{Form::text('age', '', ['id' => 'age'])}}</p> <p>{{ Form::button('入力', ['type' => 'submit'])}}</p> {{Form::close()}} </body> </html> |
出力用Bladeビュー:sampletransition.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>ユーザー名:{{$userName}}</p> <p>年齢:{{$age}}</p> </body> </html> |
web.phpのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 |
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SampleController; Route::get('/sample', function () { return view('sample'); }); Route::get('/sampletransition', [SampleController::class, 'showPage']); |
実行して確認
画面で入力した内容をRequestを使って遷移先の画面に表示することができるのかを実行して確認します。
Laravelでサーバーを立ち上げるコマンドは
1 |
php artisan serve |
です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。
- http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/sample
※コマンドプロンプトに記載されているURL - http://localhost:8000/sample
どちらかのURLにアクセスすれば、入力画面が表示されます。
右クリックして、【ページのソースを表示】をすると、以下のようにHTMLが展開されています。
- ユーザー名:田中
- 年齢:45
を入力し、ボタンを押します。
入力した値を取得して、出力用の【sampletransition.blade.php】に遷移して、表示していることが確認できました!
まとめ:画面で入力した内容をRequestを使って遷移先の画面に表示してみよう
以上がLaravelで画面で入力した内容をRequestを使って遷移先の画面に表示するやり方の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント