【Laravel】Requestファサードを使ってBladeテンプレート内でページを判別する方法

 どうも、こんにちわ。

 今回は、LaravelのBladeテンプレートファイル内でページ判定する方法を紹介したいと思います。

 テンプレートと言えば、基本的には複数のページで共通のレイアウトやメニュー等は使用する際にとても便利ですが、中には基本的には共通なんだけど、特定のページのみにクラス名を付けて少しだけスタイルを変えたいなどといったこともあるかと思います。

 その際に、わざわざ別テンプレートを用意するのは冗長的だし効率的ではありません。また、わざわざ全ページ共通に読み込まれる変数を用意して、それで判別するのも面倒です。そこでBladeテンプレートファイル内でページ判定をして処理する方法を紹介したいと思います。

環境

 なお、今回のLaravel環境は以下の通りとなります。

今回の環境

  • Laravel 5.4.36

URLを取得してページを判別

 では、早速紹介していきたいと思いますが、今回はベーシックな方法であるURLを取得してページを判定する方法を紹介したいと思います。

Requestファサードを使ってURLを取得

 LaravelのBladeテンプレート内でURLを取得する方法はヘルパー関数などを使用して取得する方法もありますがページ判定にはあまり向いていないので、今回は「Request」ファサードを使用して判別したいと思います。

 RequestファサードはURLの取得だけではなく、Postメソッド等で渡したデータの取り扱いなどにも使うので、Controllerでも使用することの多いLaravelを代表するファサードの1つですね。

 そんなLaravelを代表するファサードである「Request」ファサードには、例によってたくさんのメソッドがあります。いくつか例を挙げると下記のようなメソッドがあります。

フィールド
url URLを取得(例:https://example.com)
fullUrl クエリ文字列等を含むURLを取得(例:https://example.com/?id=1)
ip クライアントIPアドレスを取得
has リクエスト内に特定の値が存在の有無

 その他のメソッドはこちらのページにリストがあるのでご参照ください。

isメソッドを使ってページを判別

 このようにたくさんのメソッドを持つ「Request」ファサードですが、ページを判定する際に適しているメソッドが「is」メソッドになります。

 この「is」メソッドは、リクエストのURIが指定されたパターンに合致するかを確認できるメソッドになります。

 では、実際に「is」メソッドを使用してページ判定をする例を書いてみたいと思います。

 設定としては、仮に「https://example.com/about」というページがあったとして、現在のリクエストがaboutページなのかどうかを判定します。

 これだけですね。Requestファサードを呼び出してisメソッドを使ってパラメータに特定のパスを指定することで、現在のリクエストURIを判別して「true」か「false」で結果を返してくれます。それをif分で囲むことで判定して、trueだったら処理を追加するといった感じです。

 例えば、「https://example.com/page/sample」というようなもう一階層深いページであれば、下記のようにパスを指定してあげれば大丈夫です。

 指定したページと他のそうでないページで処理を分けたいのであれば「else」を使ってやればいいだけです。

 いたって簡単ですね。

まとめ

 ということで、今回はLaravelのBladeテンプレート内でのページ判定を「Request」ファサードを使って対応する方法を紹介させていただきました。

 特定のページだけちょっとカスタマイズするようなケースは多いですし、私個人も頻繁に使うので覚えておくと便利です。

 てことで今回はここまで!また!

お仕事のご相談・ご依頼
お気軽にお問い合わせください!

お仕事の依頼はこちら

シェアありがとうございます!

タグ
laravel PHP

著者プロフィール

Takanori Hashi

東京、奄美大島、宮崎の3拠点生活をしたい30代のおじさん。仕事の傍、子育て&趣味に精を出す一児のパパ。普段はプログラム書いたりデザインしたりWeb関連のお仕事をしています。TwitterもInstagramも基本フォローバックするのでお気軽にフォローしてください!

人気記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です