我有一些导航链接,我想在laravel 5中获取当前路线,以便在导航中使用class
active
。以下是示例链接:
<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
中只有导航链接。我怎样才能获得当前路由并检查它是否等于当前链路?提前谢谢。
答案 0 :(得分:5)
$uri = Request::path()
查看docs
答案 1 :(得分:2)
您可以使用
等命名路线Route::get('/', ['as'=>'home', 'uses'=>'PagesController@index']);
然后在视图中您可以执行以下操作
<li {!! (Route::is('home') ? 'class="active"' : '') !!}>
{!! link_to_route('home', 'Home') !!}
</li>
答案 2 :(得分:0)
所以我得到了一些小技巧。例如,地址栏中的网址为http://localhost:8000/tourism/places
。
如果我使用Request::path()
方法,我会得到tourism/places
。但我想得的只是tourism
部分,所以我所做的就是:
$currentPath = Request::path();
$values = explode("/", $currentPath);
$final = $values[0];
现在$final
变量的值为"tourism"
。
现在为了全局变量加载,我将代码包含在AppServiceProvider.php
内的public function boot()
中。
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>
答案 3 :(得分:0)
简单的方法总会更好,只要使用与生成链接相同的函数,它就会为您提供所有信息,包括flexibility 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-路由器文件。