元の記事
Five Useful Laravel Blade Directives
はじめに
この投稿は↑の記事を和訳したものです。
本文
テンプレートを簡素化するため、もしくは特定の問題を楽勝で解決できる便利なディレクティブを学ぶため、これから5つのBladeディレクティブを紹介します。特にLaravel初心者の方々にとっては、これらのヒントはLaravelのテンプレートエンジンであるBladeの素晴らしい機能を習得するのに役立つでしょう。
それでは、始めましょう。
1. ユーザーが認証されているかチェックする
ユーザーが認証されているかチェックする際には、以下のようにしてユーザーがNULLかどうかで判断できます。
@if(auth()->user())
// ユーザーは認証されています。
@endif
しかしながら、Laravelにはもっと綺麗に同じ機能を実現するカスタムBladeディレクティブが備わっています。
@auth
// ユーザーは認証されています。
@endauth
2. ユーザーがゲストかどうかをチェックする
以下のようにguest()
関数を利用すれば、ユーザーが認証されていないゲストであるかどうかをチェックする事ができます。
@if(auth()->guest())
// ユーザーは認証されていません。
@endif
しかしながらLaravelは@guest
ディレクティブも提供しています。
@guest
// ユーザーは認証されていません。
@endguest
@else
ステートメントを利用することで、これらの2つのディレクティブを組み合わせる事もできます。
@guest
// ユーザーは認証されていません。
@else
// ユーザーは認証されています。
@endguest
3. 最初のViewが存在すればそれをInclude、存在しなければ二つ目のViewをInclude
テーマが複数あるウェブサイトを構築する際には、指定されたファイルが存在しているか、存在していない場合は次のファイルIncludeするといった機能が必要になります。
これは、Bladeの簡単な条件式を用いる事で容易に実現できます。
@if(view()->exists('first-view-name'))
@include('first-view-name')
@else
@include('second-view-name')
@endif
最初に見つかったテンプレートをIncludeするには、以下のようにもっと短くてクリーンなディレクティブがあります。
@includeFirst(['first-view-name', 'second-view-name']);
4. 条件を元にViewをInclude
認証されたユーザーの場合にのみコンテンツを追加する場合など、条件に応じてViewをIncludeできるのは非常に便利です。
@if
の条件式を使うと、以下のように書き換える事もできます。
@if($post->hasComments())
@include('posts.comments')
@endif
@includeWhen
ディレクティブを利用すれば、もっとクリーンに(たったの1行で)条件に応じたViewをIncludeする事ができます。
@includeWhen($post->hasComments(), 'posts.comments');
5. Viewが存在すればInclude
テーマをカスタマイズできるシステムもしくは、動的にViewを生成するようなシステムでは、必ず指定されたViewが存在するかをチェックしなければなりません。
もちろん、Viewヘルパーのexists
関数を利用して対処する事ができます。
@if(view()->exists('view-name'))
@include('view-name')
@endif
しかし、@includeIf
ディレクティブを利用すると、同じ事をするのにもっと簡単な方法がある事がわかると思います。
@includeIf('view-name')
official Blade documentationを見れば、これらのヒントや他の便利なコツに加えて、Laravelのプロジェクトにおけるフロントエンドのテンプレートに関するスキルアップをする事ができるでしょう。
これらのディレクティブを利用して、リファクタリングを楽しんでください!