LaravelのBlade内で現在のページのURLによってCSSを切り替える方法


laravel-request-is

例えば、メニューにactivecurrentなどのクラスを追加したい、特定のページだけCSSクラスを切り替えたくなることが多々あります。
そんな時は、LaravelRequest::is()関数を使って条件分岐させましょう。

現在のURLを判定する

使い方はとっても簡単です。

@if(Request::is('admin'))
    true
@elseif
    false
@endif

URLhttp(s)://www.example.com/homeだったら「true」、それ以外なら「false」を返します。
Blade内でなければこのように書きます。

if ($request->is('admin/*')) {
    //
}

Blade内でCSSの切り替え

今回はCSSクラスを切り替えることを前提に書いていますが、もちろん他の要素やテキストや画像のコンテンツを分岐するのにも応用できます。

以下は、現在のURLhomeの時だけclass="active"を追加する例です。

<li {!! (Request::is('home') ? 'class="active"' : '') !!}>
    <a href="/home"><i class="fa fa-dashboard"></i> ホーム</a>
</li>

このような書き方もできます。

<li @if(Request::is('home')) class="active" @endif>
    <a href="/home"><i class="fa fa-dashboard"></i> ホーム</a>
</li>

また、ワイルドカードによるパターン指定もできます。
以下のように記述すると、例えばadmin/users/以降にcreateshoweditdeleteなどがあった場合でもtrueを返します。

<li @if(Request::is('admin/users/*')) class="active" @endif>
    <a href="/home"><i class="fa fa-dashboard"></i> ホーム</a>
</li>
Laravelのテンプレート(blade)内で、URLによる条件判定を実装する方...
Laravelのテンプレート内でURLによる条件判定を実装する - ハマログ - ハマログ
JavaScriptでもできると思うが、余計な記述をしなくていいので、こっちの方がスマートかと思います。

コメント

このブログの人気の投稿

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

RHEL 7でスタティック(静的)ルートを追加する4つの方法

UTF-8のBOM付きとBOMなしを変換する方法(Linux)