#やりたいこと
Bootstrapでメニューに現在のURLからactive
クラスを付与したい
適当にルーティング用意
web.php
Route::get('/hoge','HogeController@index')->name('hoge');
Route::get('/fufa/{fuga_id}','FugaController@index')->name('fuga');
Route::get('/piyo/piyo','PiyoController@index')->name('piyo');
メニューのサンプル
<li>
<a href="{{ route('hoge') }}">
hoge
</a>
</li>
<li class="active">
<a href="{{ route('fuga',['fuga_id' => 1]) }}">
fuga
</a>
</li>
<li>
<a href="{{ route('piyo') }}">
piyo
</a>
</li>
#やり方
##1
{{ request()->route()->named('hoge*') ? 'active' : '' }}
{{ request()->route()->named('fuga*') ? 'active' : '' }}
{{ request()->route()->named('piyo*') ? 'active' : '' }}
現在のリクエストが指定した名前付きルートのものであるかを判定したい場合は、Routeインスタンスのnamedメソッドを使います。
これが一番良い方法
必須パラメータ除いても判定できる
*で、仮にhoge.indexとかhoge.showとかも対応になる
##2
{{ reqeust()->is('hoge') ? 'active' : '' }}
{{ reqeust()->is('fuga/*') ? 'active' : '' }}
{{ reqeust()->is('piyo/piyo') ? 'active' : '' }}
isメソッドにより、リクエストのURIが指定されたパターンに合致するかを確認できます。このメソッドでは*をワイルドカードとして使用できます。
変更に弱い。URL変えるたびにこちらも変える必要がある
#参考
https://quickadminpanel.com/blog/laravel-how-to-make-menu-item-active-by-urlroute/