はじめに

Laravel で view からレイアウトファイルにデータを渡す方法について調べた。

TL;DR

  • @section, @yield を使う

目次

  1. はじめに
  2. TL;DR
  3. 環境・条件
  4. 詳細
  5. まとめ
  6. その他・メモ
  7. 参考文献

環境・条件

1
2
3
4
5
6
7
8
9
10
11
12
$ grep -i pretty /etc/os-release
PRETTY_NAME="Ubuntu 16.04.3 LTS"

$ php -v
PHP 7.2.22-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:12) ( NTS )

$ composer -V
Composer version 1.9.0 2019-08-02 20:55:32

$ composer info laravel/framework
name : laravel/framework
versions : * v5.7.28

詳細

@section, @yield を使う。
参考: レイアウト定義

レイアウトファイルの <div> 要素に、view ファイルごとの class を設定したいようなケースを例にする。

resources/views/layouts/app.blade.php

1
2
3
4
// @yield で class に設定
<div class="@yield('wrapper_class')">
@yield('content')
</div>

view ファイル側では、@sectionclass 名を設定。

resources/views/content.blade.php

1
2
3
4
5
6
7
8
@extends('layouts.app')
@section('wrapper_class', 'my-wrapper')

@section('content')
<div class="content">
hoge
</div>
@endsection

上記により出力される HTML は以下の通り。

1
2
3
4
5
<div class="my-wrapper">
<div class="content">
hoge
</div>
</div>

同じ方法で <title><meta> (OGP とか) などにも使える。

まとめ

  • @section, @yield を使う

その他・メモ

関連: Laravel で @section がある場合のみ HTML を表示

参考文献

関連記事