cosian.com

Laravel入門(3)

2019-08-07

system

■コントローラから値をテンプレートに渡す

テンプレートファイル
resources/views/hello/index.php
を以下のように変更します。

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Hello/Index</title>
  5. </head>
  6. <body>
  7. <h1>Index</h1>
  8. <p><?=$msg?></p>
  9. </body>
  10. </html>


下から3行目、変数msgを表示するように変更しています。
コントローラでこの変数msgの値をセットし渡すようにします。

app/Http/Controllers/HelloController.php

  1. public function __invoke() {
  2. $data = ['msg'=>'コントローラからのメッセージが表示されれば成功'];
  3. return view('hello.index', $data);
  4. }


これで、メッセージが表示されることが確認できる。
テンプレートへの値の受け渡しは、

return view(テンプレート, 配列);
の形式で受け渡しができる。
変数$data内のmsgというキーの内容をテンプレートで指定した変数$msgに渡した。


■ルートパラメータの受け渡し

PHPで記述する場合のGETの役割みたいなものだろうか?
もう少し先々まで勉強しないとわからないが、おそらく必要になるので値の受け渡し方法を覚えておく。

まずはテンプレートに値を表示させる。

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Hello/Index</title>
  5. </head>
  6. <body>
  7. <h1>Index</h1>
  8. <p><?=$msg?></p>
  9. <p>ID=<?=$id?></p>
  10. </body>
  11. </html>


下から3行目の$idを取得し表示するように設定した。
次にコントローラ。

  1. public function index($id='zero') {
  2. $data = [
  3. 'msg'=>'コントローラからのメッセージが表示されれば成功',
  4. 'id'=>$id
  5. ];
  6. return view('hello.index', $data);
  7. }


indexメソッドの引数として$idの初期値を設定しておく。$data配列にキー'id'を追加し値を$idとした。これでキー'id'の値は$idという変数がセットされる。
最後にルート情報の修正

Route::get('/{id?}', 'HelloController@index');

ドキュメントルートの後ろに/id名を入れるURLでHellControllerのindexメソッドが呼び出されるように変更。
これで、URLに任意のid名を入れるとテンプレートに表示される。
また、ドキュメントルートだけの場合は、Controllerのindexメソッドで設定したidの初期値zeroが表示される。

今回はここまで。

コメントを書く
コメント
お名前