Laravelでアクティブなナビゲーションを実装する方法


  1. ルート名を使用する方法: Laravelでは、ルート名を使用してナビゲーションメニューでアクティブなリンクを表示することができます。まず、各ルートに名前を割り当てます。例えば、以下のようなルートがあるとします:
Route::get('/', 'HomeController@index')->name('home');
Route::get('/about', 'AboutController@index')->name('about');
Route::get('/contact', 'ContactController@index')->name('contact');

ナビゲーションメニューのビューファイルで、routeヘルパー関数を使用してアクティブなリンクを表示します:

<ul>
    <li><a href="{{ route('home') }}" class="{{ request()->routeIs('home') ? 'active' : '' }}">Home</a></li>
    <li><a href="{{ route('about') }}" class="{{ request()->routeIs('about') ? 'active' : '' }}">About</a></li>
    <li><a href="{{ route('contact') }}" class="{{ request()->routeIs('contact') ? 'active' : '' }}">Contact</a></li>
</ul>

request()->routeIs('ルート名')は、現在のリクエストが指定したルート名に一致する場合にactiveクラスを返します。

  1. URLを使用する方法: もう一つの方法は、URLを使用してアクティブなリンクを表示する方法です。ナビゲーションメニューのビューファイルで、request()->is('URLパターン')を使用してアクティブなリンクを表示します:
<ul>
    <li><a href="/" class="{{ request()->is('/') ? 'active' : '' }}">Home</a></li>
    <li><a href="/about" class="{{ request()->is('about') ? 'active' : '' }}">About</a></li>
    <li><a href="/contact" class="{{ request()->is('contact') ? 'active' : '' }}">Contact</a></li>
</ul>

request()->is('URLパターン')は、現在のURLが指定したパターンに一致する場合にactiveクラスを返します。

  1. Bladeディレクティブを使用する方法: さらに、Bladeディレクティブを使用してアクティブなリンクを表示する方法もあります。ナビゲーションメニューのビューファイルで、@ifディレクティブを使用してアクティブなリンクを表示します:
<ul>
    <li><a href="/" class="@if(Request::is('/')) active @endif">Home</a></li>
    <li><a href="/about" class="@if(Request::is('about')) active @endif">About</a></li>
    <li><a href="/contact" class="@if(Request::is('contact')) active @endif">Contact</a></li>
</ul>

@if(Request::is('URLパターン'))は、現在のURLが指定したパターンに一致する場合にactiveクラスを適用します。

これらはLaravelでアクティブなナビゲーションを実装するためのいくつかの一般的な方法です。どの方法を選択するかは、プロジェクトの要件と個人の好みによります。