在 Laravel 項目開發中,我們經常需要在導覽選單中標記當前頁面,使其具有顯示不同狀態的 class name,比如 active
,這樣方便使用者辨識當前所在的位置。本篇文章將介紹如何根據當前路由名稱,在 Blade 模板中動態切換 a
標籤的 class
,實現狀態切換。
Laravel 提供了 request()->routeIs()
方法,讓我們可以輕鬆判斷當前的路由名稱,並根據判斷結果為選單項目添加 active
類別。
範例程式碼
在 Blade 模板中,我們可以這樣使用:
<ul class="list-unstyled dashboard-menu mb-0">
<li>
<a href="{{ route('dashboard', ['organization_id' => $organization->id]) }}"
class="{{ request()->routeIs('dashboard') ? 'active' : '' }}">
佈告欄
</a>
</li>
<li>
<a href="{{ route('notice', ['organization_id' => $organization->id]) }}"
class="{{ request()->routeIs('notice') ? 'active' : '' }}">
報名注意事項
</a>
</li>
</ul>
程式碼解析
-
request()->routeIs('dashboard')
:-
Laravel 提供的
routeIs()
方法,可用來判斷當前的路由名稱是否符合指定的名稱。 -
若當前頁面的 route name 為
dashboard
,則回傳true
,否則為false
。
-
-
class="{{ request()->routeIs('dashboard') ? 'active' : '' }}"
:-
如果
routeIs('dashboard')
回傳true
,則class
會包含active
,否則不加上任何額外的 class name。
-
-
request()->routeIs('notice')
:-
判斷是否當前頁面為
notice
,類似於dashboard
的邏輯。
-
CSS 樣式設定
確保在 CSS 中定義 active
類別,例如:
.active { font-weight: bold; color: #007bff; text-decoration: underline; }
透過 request()->routeIs()
方法,我們可以輕鬆判斷當前的路由名稱,並動態切換選單的 active
類別,使導覽列更加直覺易用。這種方式不僅適用於 Laravel,也能有效提升使用者體驗,使頁面瀏覽更加順暢。