4月からエンジニアとして働く初心者です。
今回はLaravelでView(bladeファイル)にControllerから受け取った変数の中身を表示する方法をまとめてみます。
ControllerからViewに変数を渡す
①viewメソッドの第2引数
- 単一の変数を渡す
public function sample() {
$value = 5;
return view( 'sample.index' , [ 'value' => $value ]); // [ 'view側で使うときの配列/変数名' => $設定した配列/変数名 ]の形。
}
- 第2引数で渡すとき、一般には連想配列(
[ 'キー' => 値 ]
)にする - 渡す変数は配列でも良い
public function sample() {
$fruits = array(
'tomato' => 100,
'apple' => 150,
'banana' => 50,
);
return view('sample.index', ['fruits' => $fruits]);
}
- 複数の値を渡すときはまとめることができる
public function sample() {
$fruits = array(
'tomato' => 100,
'apple' => 150,
'banana' => 50,
);
$value = 5;
return view('sample.index', [
'fruits' => $fruits,
'value' => $value,
]);
}
②compact関数を使う
①の第2引数の部分にcompact関数を使います。
public function sample() {
$fruits = array(
'tomato' => 100,
'apple' => 150,
'banana' => 50,
);
$value = 5;
return view('sample.index', compact( 'fruits', 'value' ));
}
- 設定した変数名を$マークをつけずに書きます
- 書き方がシンプルなため可読性が高い
- view側で使うときに別の名前を付けたいときは使えない
③withメソッドを使う
①の第2引数の内容をwithメソッドを呼び出して書くイメージ
public function sample() {
$fruits = array(
'tomato' => 100,
'apple' => 150,
'banana' => 50,
);
$value = 5;
return view('sample.index') ->with([
'fruits' => $fruits,
'value' => $value,
]);
}
- 第2引数に指定するより可読性が高い
- view側で使うときに別の名前を付けることができる
全体のイメージとしては①は単純だが読みにくい、②が一番シンプル、③が可読性高く、柔軟ととらえています。状況に合わせて②か③使い分ける感じ…かな…?
渡された変数をviewで表示する
①単一の変数の場合
- 2重波括弧(マスタッシュ、{{ }})で囲う(基本はこっちしか使わない)
-
<?= $変数名 ?>
で囲う(PHPで短い形式の echo 文を書く方法)
Controller
public function sample() {
$value = 5;
return view( 'sample.index' , [ 'value' => $value ]);
}
View(bladeファイル)
<div>
<p>{{$value}}</p>
<p><?= $value ?></p>
</div>
②配列の場合
@foreachを使います。
Controller
public function sample() {
$fruits = array(
'tomato' => 100,
'apple' => 150,
'banana' => 50,
);
return view('sample.index') ->with(['fruits' => $fruits]);
}
View(bladeファイル)
@foreach( $fruits as $fruit )
<p>{{$fruit}}</p>
@endforeach
@foreachは繰り返しの処理。
$fruitsには配列が入っているので、それを一つずつ同じ作業を繰り返してくれる。
おわりに
ひとまず変数の受け渡しと表示の一番よくみるところをまとめてみたつもりですが、まだまだ勉強すること多いですね、、、
間違いなどあれば教えてください。