laravel レイアウト

sectionとyeildは対になっている。
テンプレート側で、yieldを入れておくと、実体側のsectionを読み込む。

テンプレートの読み込みはextendで行う。
@extends(‘layouts.common’)
viewsフォルダの下のlayoutsフォルダの中のcommon.blade.phpを継承する。

ーー
実体=viewsの中のBladeファイル
テンプレート=Layoutsフォルダを作って配置

置く場所が違う(別の場所に置いている)だけで、テンプレートと実体のファイルは同じ「Blade」ファイルです。
1.routesでviewsのファイルを指定するとそれを表示させるようにする。
2.viewファイルに、extendが記載されていたらそのファイルを取りに行く。
3.テンプレートファイルに、yieldが設定されている場合、yieldに設定されているcontentをviewファイルから探す。パーツがテンプレートを取りに行くイメージ。取得したテンプレートに自分のパーツをはめ込む。

ーー
Bladeのコメントは、{{– コメントの内容 –}}と記述しよう。

ーー
@include(‘layouts.header’)
インクルードする場合の、相対パスはどこから見たアドレスになるのだろう?
おそらく、routesで見にいったファイルから見たアドレスになるのではないかと思う。

 

ーー

cssやjsなど、ページごとにlinkするファイルを指定したい場合。
@stack(‘sakajs’)と@push(‘sakajs’)・・・@endpushを使う。

@stackをheaderなど共通部分が書いてある、common.bladeなどに記載する。
@pushをそれぞれのページのbladeに記載する。

@push・・・@endpushに記載されている内容が、@stackに記載されているものとして解釈される。

おそらく@pushと@stackは一対多になっているのだと思う。

 

ーー

レイアウトで、URLによる判定を行いたい場合。

@if(!Request::is(‘admin’))
 @include(‘layouts.header’)
@endif

Request::is(‘admin’) これで判定が返る。