Laravel 如何快速判斷是否當前位置?

其實在blade文件中可這樣做判斷

    @if(Route::currentRouteName() == "user")
        class="active"
    @endif

但如果是情況更複雜的,比如是 你 user.index. user.edit. user.create 都需要active等等?

又有人會這樣做

 <li {{ Request::is('/url') ? ' class="active"' : null }}>...</li>

其實都是每次要手動去改,或者要思考有沒有打漏了什麼條件可能性

後來我在laracasts上找到個很不錯的方法

前題要先建立你自己的helpers.php 詳細先請參考此篇文章的第4點:建立一個常用的function file, 並全站式自動載入

然後去你的helpers.php, 新增2個function

function isActiveRoute($route, $output = "active") {
    if (Route::currentRouteName() == $route) {
        return $output;
    }
}

function areActiveRoutes(Array $routes, $output = "active") {
    foreach ($routes as $route) {
        if (Route::currentRouteName() == $route) {
            return $output;
        }
    }
}

以後你就可以用這樣的方式在blade中做判斷了:

<li class="{{ isActiveRoute('home') }}"><a href="{{ route('home') }}">Home</a></li>

<li class="{{ areActiveRoutes(['client.index', 'client.create', 'client.show']) }}">
    <a href="{{ route('client.index') }}"><i class="fa fa-users"></i> Clients</a>
</li>

參考來源