在 Laravel 中动态设置菜单项的活动类

Vol*_*rev 4 php navigation laravel laravel-5 bootstrap-4

我正在使用 bootstrap 4 创建一个 laravel 应用程序。

我的主导航菜单位于app.blade.php. 我有四个主要刀片,关于、产品、联系方式和博客。

然后我需要根据当前页面更改菜单项活动类。由于菜单是从动态加载的,因此app.blade.php我必须动态地在导航菜单中设置当前页面的活动类。

我所做的是在每个刀片中定义一个名为的变量,$currentpage并为其分配页面名称,假设它是blog.blade.php

<?php $currentPage = 'blog';?>
@extends('layouts.app')

@section('content')
Run Code Online (Sandbox Code Playgroud)

并在app.blade.php,

<li class="<?php if($currentPage =='blog'){echo 'nav-item active';}?>">
                            <a class="nav-link " href="{{ url('/blog') }}">{{ __('sentence.Blog') }}</a>
                        </li>
Run Code Online (Sandbox Code Playgroud)

所以这工作正常..

但我想知道这是正确的方法吗?还有哪些其他可能的方法可以满足我的要求

Rwd*_*Rwd 9

您可以使用以下方法,而不是$currentPage在布局文件中定义变量
request()->is()

<li class="nav-item {{ request()->is('blog') ? 'active' : ''}}">
    <a class="nav-link " href="{{ url('blog') }}">{{ __('sentence.Blog') }}</a>
</li>
Run Code Online (Sandbox Code Playgroud)

is()方法本质上采用请求的当前 url 路径,并使用Str::is()来检查您传入的模式。

这样,您只需检查当前 URL 是否与链接 URL 匹配,而无需在应用程序的其他位置定义额外的数据。