2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2のLaravel6.0環境のBladeテンプレートの基礎を学ぶ AWS/Laravel連載(8)

Last updated at Posted at 2019-09-28

はじめに

前回の記事でデバッグバーを入れました。

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

いくつか試してみます。

resources/views/home.blade.php
...
                    You are logged in!
...

と書かれている箇所に2行追加します。

resources/views/home.blade.php
...
                    {{ Auth::user()->name }}さん<br>
                    {{ auth()->user()->name }}さん<br>
                    You are logged in!
...
echo.png

今回、testというユーザー名で登録したので「testさん」と出ています。
書き方は少し違いますが、どちらでも表示できています。実際サービスとして運用する場合は、コーディングルールとしてどちらかに統一した方が良さそうです。

ちなみにBladeテンプレートではなく普通のPHP記述だと

resources/views/home.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テンプレートで書くと以下のようになります。

resources/views/home.blade.php
...
                    @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
...
fizzbuzz.png

if,for,foreachといった構文はもちろんですが、Railsでは使えるのにPHPだとサポートしていないunless。

if(!$hoge){
 ~~
}

と書かないといけないところ

@unless ($hoge)
 ~~
@endunless

をサポートしていたり、未定義変数参照のNoticeエラー回避用の

if(isset($hoge)){
 ~~
}
if (empty($hoge)){
 ~~
}

@isset
 ~~
@endisset

@empty
 ~~
@endempty

とサポートしているので便利です。

本日は以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?