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

例えば、メニューにactive
やcurrent
などのクラスを追加したい、特定のページだけCSSのクラスを切り替えたくなることが多々あります。
そんな時は、LaravelのRequest::is()関数を使って条件分岐させましょう。
現在のURLを判定する
使い方はとっても簡単です。
@if(Request::is('admin'))
true
@elseif
false
@endif
URLがhttp(s)://www.example.com/home
だったら「true」、それ以外なら「false」を返します。
Blade内でなければこのように書きます。
if ($request->is('admin/*')) {
//
}
Blade内でCSSの切り替え
今回はCSSのクラスを切り替えることを前提に書いていますが、もちろん他の要素やテキストや画像のコンテンツを分岐するのにも応用できます。
以下は、現在のURLがhome
の時だけ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/
以降にcreate
、show
、edit
、delete
などがあった場合でも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による条件判定を実装する - ハマログ - ハマログ |
コメント
コメントを投稿