【Laravel 7】Bladeテンプレート

投稿者: | 2020年8月16日
Laravelアイコン

 

Bladeテンプレートに使用できる機能をご紹介したいと思います。

沢山ありすぎるので最初はあくまでも基本形だけです!

これ使えるみたいなのがあればその都度更新していきたいと思います。

 

エスケープ処理

{{ $sample }}で波括弧二つ付けて表示した場合

・エスケープ処理として自動的にhtmlspecialchars関数を通します。

・XSS攻撃を回避できます。

 

htmlの場合

  • ":シングルクォーテーション(’)
  • &:アンパサンド(&)
  • &lt;:小なり(<)
  • &gt;:大なり(>)
  • &nbsp;:半角スペース
  • &copy;:コピーライト

エスケープしてくれます。

 

なんでエスケープすんの?疑問に思うかもしれませんが

例えば誰かがいたずらで登録時にデータベースの名前に下記のようなタグを挿入に成功できたとしたら…

 

<h1 style=”font-size:700px”;>攻撃</h1>

 

 

 

 

 

 

のようにデータベースから画面に表示されるときにさっきのようなタグのままなら上記のような大きい文字の表示になってしまいます。

 

ですので下記のようにエスケープ処理をします。

エスケープ前
<h1 style=”font-size:700px”;>攻撃</h1>

 

エスケープ後
&lt;h1 style=&quot;font-size:700px&quot;;&gt;攻撃&lt;/h1&gt;<br>

 

これで回避できますので{{ }}をきちんと付けてエスケープをきちんとします。

 

エスケープをしたくない時の記述

{{!! $sample !!}}

ビックリマークを前後2つずつ追加します。

まあこれないとエスケープしたくない時に困りますね。

 

ディレクティブ

【@if】

  • @if
  • @elseif
  • @else
  • @endif

4つあります。

とはいっても超簡単です。

 

ユーザーにidがあれば登録済み、なければ未登録を表示します。

普通にPHPのifの前に@が付いただけでほぼ一緒です!

 

@php

PHPの記述

 

@isset

nullを判別時に使用

 

@empty

$dataが空なのかを判別。trueが表示

 

@auth

ログインしているときに表示されます。

こういうのは欲しかった機能ですよ!

 

@guest

ログインしていない時に表示されます。

こういうのは欲しかった機能ですよ!

 

@for

 

まとめ

というわけで、いくつかご紹介しましたがまだまだたくさんBladeの機能はたくさんあるので自分で使用するものだけ使用して無駄な時間に費やさないようにしましょう!

こちらの機能は使える機能があれば随時更新していきます。

以上です。