株式会社オートプロジェクト

Laravel Bladeで「ルート名」で条件分岐する方法

Laravel Bladeで「ルート名」で条件分岐する方法

Laravelでは、現在アクセスしているルートに応じてBladeテンプレート内で表示・非表示を切り替えることができます。

例えば、次のように/top.php(ルート名:top)の時だけサイドメニューを表示したいケースがあります。

@if (request()->routeIs('top'))
@include('side.teach-menu')
@endif

この記事では、この書き方の意味とほかの便利な条件分岐方法もまとめて解説します。

結論:ルート名で判定するのが一番シンプルで安全

ルートがtopの時だけ表示する

@if (request()->routeIs('top'))
@include('side.teach-menu')
@endif

なぜルート名で判定するのが良いのかというと下記の理由があります。

  1. URLが変わってもルート名が同じなら動く
  2. コントローラ側の変更に強い

また、Laravel公式が推奨している方法でもあります。

 

ルート名の確認方法

ルートの定義が次のようになっているとします。

Route::get('/top.php', [UserController::class, 'top'])->name('top');

このname(‘top’)がBlade側でつかうルート名です。

他の条件分岐方法も紹介します。

URLで判定したい場合

@if(request()->is('top.php))

・・・

@endif

部分一致も可能です。

@if (request()->is('admin/*'))

 

コントローラのアクションで判定したい場合

@if (Route::currentRouteAction() === 'App\Http\Controllers\UserController@top')

 

複数ルートをまとめて判定したい場合

@if (request()->routeIs(['top', 'home', 'dashboard']))
    ...
@endif

 

実際のユースケース例

「講師ページのときだけメニューを出したい」

@if (request()->routeIs('top'))
    @include('side.teach-menu')
@endif

「ログインユーザーのページだけ別ヘッダーにしたい」

@if (request()->routeIs('user.*'))
    @include('header_login')
@else
    @include('header')
@endif

まとめ

  • Blade でルート条件分岐するなら routeIs() が最適
  • URL 判定やアクション判定も可能だが、ルート名が最も安全
  • 複数ルートやワイルドカードにも対応

Laravel の UI 出し分けは、ルート名を使うとスッキリ書けます。

Webデザイナー / コーダーのみなさまへ

株式会社オートプロジェクトでは、バックエンド全般を安心してお任せいただけます。

サーバー設定やDB管理、セキュリティ対策など幅広いニーズに対応いたします。お気軽にご相談ください。

バックエンドについて、オートプロジェクトに問い合わせをする

Contact ご相談・お問い合わせ

実現の可否や概算費用、納期に関するご質問・ご相談も、
どうぞご遠慮なくお問い合わせください。

TOP