Laravel获得当前路线

时间:2015-09-09 03:06:49

标签: php html laravel

我有一些导航链接,我想在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中只有导航链接。我怎样才能获得当前路由并检查它是否等于当前链路?提前谢谢。

4 个答案:

答案 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-路由器文件。