Laravelのbladeで@sectionと@yieldを使うときにHTMLの特殊文字が変換されないようにする方法

こんにちは、さるまりんです。

Laravelのbladeでテンプレートで埋め込んだり、埋め込まれたりの機能の@section@yieldがあります。

こんな感じで使います。

埋め込みたい場所に

@hasSection('h2_text')
<h2>@yield('h2_text')</h2>

と書いて、埋め込みたいものを

@section('h2_text', $h2_text)

とします。

<h2>[$h2_textに入った文字列]</h2>

のように出力されます。

例えば

$h2_text='Starbucks Coffee';

だと

<h2>Starbucks Coffee</h2>

になります。

これが

$h2_text='B&O Espresso';

だと、

<h2>B&amp;O Espresso</h2>

のように$h2_textの文字列がにHTMLの特殊文字が含まれていると変換されて出力されます。

この&&amp;の変換をしてほしくないケースもありますよね。

その場合どのようにすればいいか?

@sectionを次のように書き方を変えます。

@seciont('h2_text'){!! $h2_text !!}}@endsction

{!! !!}はblade上で、特殊文字の変換を行わずにそのまま出力するための記法で、それを使って書くことで実現できます。

<h2>B&O Espresso</h2>

ちょっとしたことでもかなり悩んでしまいました。
忘れないようにここの置いておきます。

読んでくださってありがとうございました。

それではまた!