プログラミング学習186日目〜Laravel 書籍で学習 3日目〜

今日はルートパラメータをビューに渡すまで。
urlのhttps://~~/〇〇 の〇〇の部分を表示するというやつです。

//ルート

Route::get('hello/{id?}','HelloController@index')->name('hello.index');

ルート(web.php)でhello/{id?}の処理をコントローラーのindexメソッドに渡す。{id?}はコントローラのindexメソッドの引数になります。{}内はid?としていますがidの部分は何でもいいようです(全角、1文字目が数字は駄目なようです)。

 //コントローラ
 
 public function index($id='パラメータなし') {  //$id='〇〇'はデフォルト値(省略された場合の値)
       $data = [
           'msg'=> 'これはコントローラから渡されたメッセージです。',
           'id'=>$id,
       ];

       return view('hello.index', $data);
   }

渡された{id?}を変数$idで受けます。こちらも変数名はidとしていますが何でも問題ありません。〇〇部分が空白だった場合エラーが出るので引数のデフォルト値を設定していますが、空白にならないのであればindex($id)で問題ないと思います。
渡されたパラメータの処理をコントローラに書いてviewに渡します。

//ビュー

<html>
<head>
   <title>Hello</title>
   <style>
       body {font-size: 16px; color:#999}
       h1 { font-size: 100px; text-align: right; color: #f6f6f6;
       margin: -30px 0px -100px 0px;}
   </style>
</head>
<body>
   <h1>Index</h1>
   <p><?php echo $msg; ?></p>
   <p>ID=<?php echo $id ?></p>
</body>
</html>

昨日もやりましたが、コントローラでviewメソッドの第2引数を連想配列にしてやると、ビューに渡された連想配列のキーを変数として扱えるようになるので、連想配列のキーである、'msg'と'id'はビューファイルではそれぞれ$msg、$idとして使えます。

結果これが表示されます。

スクリーンショット 2020-07-28 1.39.51

hello/以下の部分が$idと扱われweb上で表示されます。


この記事が気に入ったらサポートをしてみませんか?