Laravel 5.4: Viewへデータを引き渡す

Summary

  • テンプレートはBladeファイル: foo.blade.php
  • withを使ってControllerからViewへ渡す

  • Controller側:

    • view('pages.about')->with('name', $name)
  • View側:
    • エスケープ: {{$bar}}
    • 非エスケープ: {!! $bar !!}

How to basic

  • app/Http/routes.php
Route::get('about', 'PagesController@about');
  • コントローラ作成
$ php artisan make:controller PagesController
  • aboutメソッド作成
    • app/Http/Controllers/PagesController.php
class PagesController extends Controller {
 
    public function about() {
        $name = 'Jeffery Way';
        return view('pages.about')->with('name', $name);
    }
 
}
  • テンプレート作成
    • resources/views/pages/about.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <h1>About {{$name}}</h1>
</body>
</html>

How to advance

  • エスケープ

    • エスケープ: {{$bar}}
    • 非エスケープ: {!! $bar !!}
  • データ渡しにwithを使う

    • 単数:
      • Controller: view('pages.about')->with('name', $name)
      • Template: {{$name}}
    • 複数(配列):
      • Controller: view('pages.about')->with(['first' => 'Jeffery', 'last' => Way'])
      • Template: {{$first}} {{$last}}
  • データ渡しにwithを使わない
    • 単数:
      • Controller: view('pages.about', $data)
      • Template: {{$first}} {{$last}}
    • 複数(連想配列):
      • Controller: view('pages.about', $data)
      • Template: {{$name['first']}} {{$name['last']}}
    • 複数(別変数):
      • Controller: view('pages.about', compact('first', 'last'))
      • Template: {{$first}} {{$last}}

参考

http://site.oganity.pw/160/