PHPフレームワーク「Laravel」PHPテンプレートを利用する
Laravelには、「Blade(ブレード)」というLaravel独自の高機能なテンプレートエンジンの利用、通常のPHPファイルをテンプレートとして利用の2種類のテンプレート機能が備わっています。
今回は、PHPファイルをテンプレートとして利用する方法を紹介します。
PHPテンプレートを作成する
では、テンプレートとして利用するPHPファイルを作成します。
PHPテンプレートの作成場所は「resources」→「views」内に任意のディレクトリを作成(今回はhelloとしました)します。作成したディレクトリ内に「index.php」を作成します。
PHPファイルの作成ができたら、テンプレートとして利用するためにHTMLを記述します。
今回は以下のような内容のHRMLを記述しました。
1 2 3 4 5 6 7 8 9 | <html> <head> <title>Hello/Test</title> </head> <body> <h1>Hello / index</h1> <p>これはHelloのindexファイルです。</p> </body> </html> |
ルート設定でPHPテンプレートを利用する
PHPテンプレートができたら、ルート設定を行い、PHPテンプレートの表示を行います。
ルートの設定は以下のようになります。
view( ‘ディレクトリ名 . ファイル名’ )
1 2 3 | Route::get('hello', function () { return view('hello.index'); }); |
これで、http://〇〇/hello/ にアクセスするとPHPテンプレートの内容が表示されます。
コントローラでPHPテンプレートを利用する
ルート設定でのPHPテンプレートは上記の通りです。
次は、コントローラを利用しPHPテンプレートを表示してみます。
「PHPフレームワーク「Laravel」MVCとコントローラを利用する」で作成した「TestController.php」に以下の内容を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index(){ return view( 'hello.index' ); } } |
次に、web。phpにルート情報を記述します。
1 | Route::get( 'hello', 'App\Http\Controllers\TestController@index' ); |
これで、http://〇〇/hello/ にアクセスするとコントローラを利用したPHPテンプレートの内容が表示されます。
値をPHPテンプレートに渡す
テンプレートの利用でも値の受け渡しが可能です。
まずは、テンプレートに値の挿入先をPHPで記述します。
$msg1と$msg2が受け取った値の表示先となります。
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <title>Hello/Test</title> </head> <body> <h1>Hello / index</h1> <p>これはHelloのindexファイルです。</p> <p>値:<?php echo $msg1;?></p> <p>値:<?php echo $msg2;?></p> </body> </html> |
送信する値の設定はコントローラに行います。
値の設定は配列で行い、view()メソッドの第二引数に渡します。
下記の場合は配列を格納する$dataを用意し$msg1、$msg2にそれぞれ値を代入しています。
配列の$dataはviewメソッドの第二引数に指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index(){ $data = [ 'msg1' => '値の受け渡し1' ,'msg2' => '値の受け渡し2' ]; return view( 'hello.index' ,$data ); } } |
全ての設定が完了したらhttp://〇〇/hello/にアクセスします。
$msg1、$msg2に代入した値が表示されていることがわかります。
$data[ $msg1 => ” ] で配列に格納した情報は | $msg1として受け取れる |
$data[ $msg2 => ” ]で配列に格納した情報は | $msg2 として受け取れる |
クエリー文字列の受け渡し
コントローラを利用しクエリー文字列を渡すこともできます。
クエリー文字列とは?
URLの末尾にある「?〇〇=■■&▲▲=××」がクエリー文字列です。
PHPでWebアプリケーションの開発などを行う際は必ず利用すると思います。
クエリー文字列の受け渡しを行うにはコントローラのindexメソッドの引数に「 Request $request 」を追加し、$data配列に、$request(クエリー文字列を受け取る)を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index( Request $request ){ $data = [ 'msg1' => '値の受け渡し1' ,'msg2' => '値の受け渡し2' ,'str' => $request->str ]; return view( 'hello.index' ,$data ); } } |
PHPテンプレートには受け取ったクエリー文字列を表示する設定を行います。
1 2 3 4 5 6 7 8 9 10 11 12 | <html> <head> <title>Hello/Test</title> </head> <body> <h1>Hello / index</h1> <p>これはHelloのindexファイルです。</p> <p>値:<?php echo $msg1;?></p> <p>値:<?php echo $msg2;?></p> <p>クエリ:<?php echo $str;?></p> </body> </html> |
これで設定は完了です。今回はルート情報の設定はそのままで変更の必要はありません。
http://〇〇/hello?str=もじれつ でアクセスするとstrに設定したクエリー文字列が表示されていることがわかります。
S.E->お勧め記事;
- PHPフレームワーク「Laravel」MVCとコントローラを利用する
- XSERVERにSSHを利用してLaravel環境を構築する
- PHPフレームワーク「Laravel」ルーティング Route::get()
- Laravel開発環境をgitでコミットする際の注意点
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHPフレームワーク「Laravel」ディレクティブ-分岐処理(条件分岐)-