簡體   English   中英

Laravel獲得當前路線

[英]Laravel get current route

我有一些導航鏈接,我想在laravel 5中獲取當前路線,以便我可以在我的導航中使用activeclass 以下是示例鏈接:

<li class="active"> <a href="/">Home</a> </li>
<li> <a href="/contact">Contact</a> </li>
<li> <a href="/about">About</a> </li>

如您所見,在Home鏈接中有active class ,這意味着它是當前選定的路由。 但由於我使用laravel blade所以我不會重復我的刀片中的每個導航鏈接,我不能使用活動類,因為我只有我的template.blade.php的導航鏈接。 我怎樣才能獲得當前路由並檢查它是否等於當前鏈路? 先感謝您。

$uri = Request::path()

查看文檔

您可以使用命名路由

Route::get('/', ['as'=>'home', 'uses'=>'PagesController@index']);

然后在視圖中,您可以執行以下操作

 <li {!! (Route::is('home') ? 'class="active"' : '') !!}>
         {!! link_to_route('home', 'Home') !!}
        </li>

所以我得到了一些小技巧。 例如,地址欄中的URL是http://localhost:8000/tourism/places

如果我將使用Request::path()方法,我將獲得tourism/places 但我想得到的只是tourism部分所以我所做的就是:

$currentPath = Request::path();

$values = explode("/", $currentPath);

$final = $values[0];

現在$final變量將具有值"tourism"

現在為了全局變量加載,我將代碼包含在public function boot()內的AppServiceProvider.php

public function boot()
{
    $currentPath = Request::path();

    $values = explode("/", $currentPath);

    $final = $values[0];

    view()->share('final', $final);
}

最后在我的刀片模板中,

<li @if ($final== "tourism") class="active" @endif>
<a href="/tourism/places">Places</a>
</li>

簡單的方法總是更好,只需使用您用來生成鏈接的相同功能,它將為您提供所有功能,包括flexibility to use wild cardsflexibility to use wild cards

<a class="nav-link {{ Request::url() === route("products.list", [$group_key]) ? 'active' : '' }}" 
    href="{{ route("products.list", [$group_key]) }}"
    >
    LInk text
</a>

此外,您仍然只有一個地方可以管理URL-s - 您的路由器文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM