LaravelでControllerからviewに変数を渡す方法まとめ

この記事では、LaravelでControllerからviewに変数を渡す方法を分かりやすく解説します。。

ControllerからViewに変数を渡す方法は主に2つあります。

開発チームによって使い方が決まっている場合もありますが、両方を知っておくと初見でもスムーズに理解できます。

どちらも選べる環境では、状況に応じて効率の良い方法を選べるようになります。

この記事を読むことで、2つの方法の違いを理解し、適切に使い分けられるようになります。

ControllerからViewに変数を渡す方法

それでは、ControllerからViewに変数を渡す方法を解説していきます。

2つの方法を実際のコード例とともに順番に紹介します。

compact関数を使用する方法

まずはcompact関数を使う方法を紹介します。

compact関数を使用すると、Controller内で定義された変数を簡単にViewに渡すことができます

以下の例をご覧ください。

public function index()
{
    $data1 = 'Hello';
    return view('welcome', compact('data1'));
}

view()の第2引数にcompact()を指定します。

compact()の引数に渡したい変数名を指定します。

これで「$data1 = ‘Hello’」という変数がviewに渡されます。

複数の変数をviewに渡したい場合は以下のように書きます。

public function index()
{
    $data1 = 'Hello';
    $data2 = 'Laravel';
    return view('welcome', compact('data1', 'data2'));
}

上記の例では、$data1と$data2という複数の変数をcompact関数を使ってviewに渡しています。

渡した変数をviewを使う方法は後ほど紹介します。

withメソッドを使用する方法

続いて、withメソッドを使う方法を紹介します。

以下の例をご覧ください。

public function index()
{
    $data1 = 'Hello';
    return view('welcome')->with('data1', $data1);
}

View側では「$data1」としてそのまま利用できます。

with()の第一引数にviewに渡したい変数名、第二引数に変数に入れる値を入れます

なのでwithの第二引数にはそのままの値も代入可能です。

public function index()
{
    return view('welcome')->with('data1', 'Hello');
}

複数の変数を渡したい場合は以下のように書きます。

public function index()
{
    $data1 = 'Hello';
    $data2 = 'Laravel';
    return view('welcome')->with([
       'data1' => $data1,
       'data2' => $data2
    ]);
}

with()の中身を連想配列にして定義します。

compact()とは書き方が異なるので注意が必要です。

渡した変数をviewで使う方法

viewで渡された変数を使う場合は上記の2パターンで共通です。

viewでの変数の使い方はこんな感じです。

{{ $data }}

渡した変数名を「{{ }}」を使ってそのまま使えます。

compact()で渡した場合も「$」をつけなければいけないので注意が必要です

配列やEloquentの場合はforeachを使う

配列やEloquentで複数の値やcollectで渡ってきた変数をviewで使う場合はforeachを使います。

以下は、foreachを使用してEloquentで取得したユーザーの名前をを表示する例です。

public function index()
{
    $users = User::all();
    return view('welcome')->with([
       'users' => $users,
    ]);
}
@foreach($users as $user)
  {{ $user->name }}
@endforeach

2パターンのviewへの変数の渡し方を理解しておこう

LaravelでControllerからViewに変数を渡す方法を解説しました。

compact関数、withメソッドの2つの方法を紹介しました。

どちらにもメリットがあり、用途に応じて使い分けるのが重要です。

Laravel開発では、これら2つを理解し、効率的に使い分けていきましょう。

コメント

この記事へのコメントはありません。