Laravel で @section がある場合のみ HTML を表示
はじめに
Laravel で @section
の設定がある場合のみ HTML を表示する方法を整理した。
例えば「共通的に使うので、レイアウトファイルにパンくずリストを定義したい」けど、「パンくずリストの表示指定が無いページでは、パンくずリスト自体を表示したくない」のようなケース。
※わかりやすい例が思いつかない。
TL;DR
@hasSection
を使う- 複合条件の場合は
@if
やView::hasSection
を組み合わせて対応
目次
環境・条件
1 | $ grep -i pretty /etc/os-release |
詳細
@hasSection
を使う。
レイアウトファイル、section_header
を読み込んで content
を表示。
resources/views/layouts/app.blade.php
1 | <main> |
section_header
では、@hasSection
を使って sectionTitle
が定義されていればその内容を、そうでなければ タイトル未設定
を表示。
resources/views/section_title.blade.php
1 | @section('section_header') |
view ファイルでは、@section('sectionTitle', 'XXXX')
で設定。
resources/views/hoge.blade.php
1 | @section('sectionTitle', 'My Title') |
最終的に出力される HTML は次の通り。
1 | <main> |
@section('sectionTitle', 'XXXX')
を設定しない場合。
resources/views/fuga.blade.php
1 | @section('content') |
最終的に出力される HTML は次の通り。
1 | <main> |
Tips: 「2つのうち片方が設定されている場合」のようなケース
「どちらか片方が設定されていれば〜」のような条件の場合は @section
では対応できないので @if
と View::hasSection
を組み合わせて対応。
1 | @section('section_header') |
まとめ
@hasSection
を使う- 複合条件の場合は
@if
やView::hasSection
を組み合わせて対応
その他・メモ
関連: Laravel で view からレイアウトファイルにデータを渡す方法
参考文献
関連記事
- Laravel で現在の URL 取得方法まとめ
- Laravel で Cookie を使う(参照/設定/削除)
- Laravel で PDF ファイルをブラウザで開く
- Laravel で withCount と having を使って絞り込み
- Laravel で「開始日時 < 終了日時」であることをバリデーションする
- Laravel で生 SQL を実行
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア