繁体   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