基礎知識

コントローラからビューへ(変数の受け渡しと展開方法)

Laravelで開発をしていて、個人的によく忘れるのが「コントローラからビューへの変数の受け渡し方法」です。

変数および配列の受け渡し方法は主に2つあります。

  • compactメソッドを使う
  • withメソッドを使う
ポイント

変数や配列以外にも Eloquent の返り値(モデルクラスのインスタンス)やクエリビルダの返り値(stdClassのインスタンス)も受け渡すことができます。これらも後述します。

今回はそんな時のための備忘録としてエントリーします。

 
INDEX

 

compactメソッド

データが単数の場合

コントローラ(変数の受け渡し)


public function index(){
  $name = "山田太郎";

  // mypageディレクトリにあるindex.blade.phpに渡す
  return view('mypage.index',compact('name'));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$name}} さん。マイページ画面です。</h1>
</body>
</html>

 
実行結果

 

データが複数の場合

コントローラ(変数の受け渡し)


public function index(){
  $first_name = "山田";
  $last_name = "太郎";
return view('mypage.index',compact('first_name','last_name'));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$first_name}} {{$last_name}} さん。マイページ画面です。</h1>
</body>
</html>

 
実行結果

 

Eloquentで取得したデータベースの値(単数)

コントローラ(変数の受け渡し)


public function index(){

//Userの id=1 レコード取得
$user = \App\User::find(1);

return view('mypage.index',compact('user'));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$user->name}} さん。マイページ画面です。</h1>
</body>
</html>

 
実行結果

 

Eloquentで取得したデータベースの値(複数)

コントローラ(変数の受け渡し)


public function index(){

//Userの全データを取得
$users = \App\User::all();

return view('mypage.index',compact('users'));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<table border="1">
<tr>
<th>ID</th>
<th>名前</th>
<th>mail</th>
</tr>
@foreach($users as $user)
<tr>
<th>{{$user->id}}</th>
<th>{{$user->name}}</th>
<th>{{$user->email}}</th>
</tr>
@endforeach
</table>
</body>
</html>

 
実行結果

 

withメソッド

データが単数の場合

コントローラ(変数の受け渡し)


public function index(){
$name = "山田太郎";
return view('mypage.index')->with('name',$name);
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$name}} さん。マイページ画面です。</h1>
</body>
</html>

 

データが複数の場合

コントローラ(変数の受け渡し)

複数のwithを使わずに、ハッシュ配列にデータを設定し、1つのwithでデータを渡すことも可能です。


$hash = array(
  'first_name' => '山田',
  'last_name' => '太郎'
);

return view('mypage.index')->with($hash);

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$first_name}} {{$last_name}} さん。マイページ画面です。</h1>
</body>
</html>

 

Eloquentで取得したデータベースの値(単数)

コントローラ(変数の受け渡し)


public function index(){

//Userの id=1 レコード取得
$user = \App\User::find(1);

return view('mypage.index')->with('user',$user));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<h1>ようこそ {{$user->name}} さん。マイページ画面です。</h1>
</body>
</html>

 

Eloquentで取得したデータベースの値(複数)

コントローラ(変数の受け渡し)


public function index(){

//Userの全データを取得
$users = \App\User::all();

return view('mypage.index')->with('users',$users));
}

 
ビュー(変数の展開)


<html>
<head></head>
<body>
<table>
<tr>
<th>ID</th>
<th>名前</th>
<th>mail</th>
</tr>
@foreach($users as $user)
<tr>
<th>{{$user->id}}</th>
<th>{{$user->name}}</th>
<th>{{$user->email}}</th>
</tr>
@endforeach
</table>
</body>
</html>

 
以上です。

本庄マサノリ

仕事でLaravelを使っています。気づいたことや新しい発見など情報を発信していきます。メールはこちら

 

-基礎知識