1
0

Laravelでcontrollerから受け取った変数をViewで表示する

Posted at

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には配列が入っているので、それを一つずつ同じ作業を繰り返してくれる。

おわりに

ひとまず変数の受け渡しと表示の一番よくみるところをまとめてみたつもりですが、まだまだ勉強すること多いですね、、、

間違いなどあれば教えてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0