Laravelでサイドバーのメニューアクティブ状態を設定する方法


  1. ルート名を使用する方法: Laravelでは、各ページには一意のルート名があります。これを使用して、アクティブなメニューアイテムを特定することができます。以下はその例です。
// web.phpでルート名を設定する例
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::get('/profile', [ProfileController::class, 'index'])->name('profile');
// サイドバーメニューのビューファイルでアクティブな状態を設定する例
<a href="{{ route('dashboard') }}" class="{{ request()->routeIs('dashboard') ? 'active' : '' }}">ダッシュボード</a>
<a href="{{ route('profile') }}" class="{{ request()->routeIs('profile') ? 'active' : '' }}">プロフィール</a>
  1. URLを使用する方法: ルート名ではなく、URL自体を使用してアクティブな状態を判断することもできます。以下はその例です。
// サイドバーメニューのビューファイルでアクティブな状態を設定する例
<a href="/dashboard" class="{{ request()->is('dashboard*') ? 'active' : '' }}">ダッシュボード</a>
<a href="/profile" class="{{ request()->is('profile*') ? 'active' : '' }}">プロフィール</a>
  1. コントローラーのメソッドを使用する方法: コントローラーのメソッドを使用して、アクティブな状態を判断することもできます。以下はその例です。
// DashboardController.php
public function index()
{
    return view('dashboard')->with('activeMenu', 'dashboard');
}
// ProfileController.php
public function index()
{
    return view('profile')->with('activeMenu', 'profile');
}
// サイドバーメニューのビューファイルでアクティブな状態を設定する例
<a href="{{ route('dashboard') }}" class="{{ $activeMenu === 'dashboard' ? 'active' : '' }}">ダッシュボード</a>
<a href="{{ route('profile') }}" class="{{ $activeMenu === 'profile' ? 'active' : '' }}">プロフィール</a>

これらの方法を使用することで、Laravelでサイドバーメニューのアクティブな状態を設定することができます。適切な方法を選択し、プロジェクトに組み込んでください。