Laravel 学習記録 #017 view Bladeテンプレートを学ぶ
LaravelのBladeテンプレートについて学習したものをまとめてます。
ざっくりです。実践編はまた別でまとめます。
Bladeテンプレートとは
Laravelに組み込まれているテンプレートエンジン
ファイルの拡張子は「.blade.php」
Bladeビューは、ルートまたはコントローラから返される(viewヘルパ)
Bladeの構文を使ってPHPのコードがかける
コンポーネントに分離も可能
Bladeの機能や構文
よく使う系
変数出力
エスケープして出力
{{ $str }}
エスケープしない場合
{!! $str !!}
改行出力
{!! nl2br(e($str)) !!}
{{}}を文字列として扱う
@{{}}
{{ }} を使うことで、XSS攻撃を防ぐために、PHPのhtmlspecialchars関数を通して自動的に通してくれています。
エスケープなしにするには{!! !!}を使います。
改行ありの表示の場合、改行文字を<br>タグに変換するための、nl2br関数と、エスケープ処理のe関数を使ったりします。
{{}}を文字列として扱いたければ、頭に@をつければOK
ディレクティブ
@〜のやつ
構文のようなもので、以下のようにいろんな機能がある
{{-- php --}}
@php
@endphp
{{-- if --}}
@if (条件式)
@endif
{{-- for --}}
@for ($i = 0; $i < $count; $i++)
@endfor
{{-- foreach --}}
@foreach ($collection as $item)
@endforeach
{{-- switch --}}
@switch($type)
@case(1)
@break
@case(2)
@break
@default
@endswitch
{{-- レイアウト継承 --}}
@extends('layout')
{{-- 他のbladeファイルを組み込み --}}
@include('hoge.fuga')
まだまだあるので、phpのこの機能使いたいなって思ったらとりあえずマニュアル確認していこうと思います。
ファイルの分割
webアプリの場合、各画面に共通のレイアウトやパーツが出てくることがほとんどですよね。
Laravelではパーツの分割について、以下の2パターンで対応できます。
・ディレクティブを使ったレイアウトの分割
・Bladeコンポーネント
ディレクティブを使ったレイアウト
親ファイルでは、@yieldディレクティブを使って子ファイルの内容が挿入される場所を決めます。
子ファイルでは@extendsディレクティブで親テンプレートを指定し、@sectionディレクティブで親テンプレート内の特定のセクションの内容を用意します。
別のBladeファイルを呼び出す場合は、@includeディレクティブを使用します。
Bladeコンポーネント
コンポーネントとなるファイルはresources\views\componentsディレクトリに作成します。
親ファイルでは、{{ $slot }}を使って子ファイルの内容が挿入される場所を決めます。($slotの他に名前付きスロットも可能)
子ファイルでは、<x-component>(componentは使用するファイル名)形式のタグを使うことでコンポーネントが使用できます。
別のBladeコンポーネントを呼び出す場合も、<x-component>で使用可能です。
この記事が気に入ったらサポートをしてみませんか?