プログラミング学習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として使えます。
結果これが表示されます。
hello/以下の部分が$idと扱われweb上で表示されます。
この記事が気に入ったらサポートをしてみませんか?