LaravelのBladeでURLによってidやclass属性を動的に切り替える方法

laravel-request-is
  • URLをコピーしました!

例えば、メニューなどのclass属性に、特定のページが表示された場合に[active]や[current]などのCSS要素を動的に切り替えたくなることが多々あります。
そんな時Laravelでは、Blade内でRequest::is()関数を使い、遷移したページのURLによって条件分岐させることで実現できます。

目次

現在ページのURLを判定する

LaravelBlade内で現在のページ指定したURLを含むか判定するには、if分とRequest::is()関数を組み合わせます。
使い方はとっても簡単です。

例えば、現在のページURLが[http(s)://www.example.com/home]だったら「true」、それ以外なら「false」を返します。
Blade以外(例えばコントローラなど)であれば、このように書きます。

Class属性の値を切り替える

今回はCSSClass属性の値を切り替えることを前提に書いていますが、もちろん他の要素やテキストや画像などのコンテンツを分岐するのにも応用できます。以下は、現在のURLが[home]の時だけclassに[active]を追加する例です。

LaravelBladeでは、他にもこのような書き方もできます。

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

JavaScriptでもできると思うが、LaravelBladeを使うなら余計な記述をしなくていいので、こっちの方がスマートかと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次