はじめに
前回の記事でデバッグバーを入れました。
EC2のLaravel6.0環境にデバッグバーを入れる AWS/Laravel連載(7)
今回はLaravelのテンプレートエンジンであるBladeと、Laravelのヘルパーを読み解いていきます。
Bladeテンプレート
LaravelはBladeというテンプレートエンジンを使っています。
普通のPHPファイルとは異なり、見やすく書きやすいコードを書くことができます。
まずは以下ドキュメントをざっと読んで試してみてください。
https://readouble.com/laravel/6.0/ja/blade.html
https://readouble.com/laravel/6.0/ja/helpers.html
いくつか試してみます。
...
You are logged in!
...
と書かれている箇所に2行追加します。
...
{{ Auth::user()->name }}さん<br>
{{ auth()->user()->name }}さん<br>
You are logged in!
...
今回、testというユーザー名で登録したので「testさん」と出ています。
書き方は少し違いますが、どちらでも表示できています。実際サービスとして運用する場合は、コーディングルールとしてどちらかに統一した方が良さそうです。
ちなみにBladeテンプレートではなく普通のPHP記述だと
...
<?php echo auth()->user()->name ?>さん
となります。(厳密にはエスケープされているので、htmlentitiesで括った時と同じ挙動です)
Bladeテンプレートでは、こんなものもサポートされています。
@php echo $hoge @endphp
という書き方は(一応)できますが冗長なので、echoしたいのなら{{ }}で書くようにしましょう。
FizzBuzz問題を解いてみる
BladeテンプレートでFizzBuzz問題を解いてみます。
FizzBuzz問題とは、1から数字をカウントアップしていき、3の倍数の時にFizz、5の倍数の時にBuzz、3の倍数かつ5の倍数の時にFizzBuzzと表示する遊びのことです。
プログラミング言語では、記法を学ぶ上での初歩的なクイズとして出されることがあります。
Bladeテンプレートで書くと以下のようになります。
...
@for ($i = 1; $i <= 100; $i++)
@if ($i % 15 == 0)
FizzBuzz
@elseif ($i % 3 == 0)
Fizz
@elseif ($i % 5 == 0)
Buzz
@else
{{ $i }}
@endif
<br>
@endfor
...
if,for,foreachといった構文はもちろんですが、Railsでは使えるのにPHPだとサポートしていないunless。
if(!$hoge){
~~
}
と書かないといけないところ
@unless ($hoge)
~~
@endunless
をサポートしていたり、未定義変数参照のNoticeエラー回避用の
if(isset($hoge)){
~~
}
if (empty($hoge)){
~~
}
を
@isset
~~
@endisset
@empty
~~
@endempty
とサポートしているので便利です。
本日は以上です。