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
なぜルート名で判定するのが良いのかというと下記の理由があります。
- URLが変わってもルート名が同じなら動く
- コントローラ側の変更に強い
また、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管理、セキュリティ対策など幅広いニーズに対応いたします。お気軽にご相談ください。

EC用公式アカウント