php - 在 laravel 中动态设置菜单项的事件类

标签 php laravel laravel-5 bootstrap-4 navigation

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

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

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

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

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

@section('content')

app.blade.php 中,

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

所以这可以正常工作..

但我想知道这样做是否正确,以及满足我的要求的其他可能方法是什么

最佳答案

除了在布局文件中定义一个$currentPage变量,你可以使用
request()->is() 方法:

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

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

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

关于php - 在 laravel 中动态设置菜单项的事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452808/

相关文章:

mysql - Eloquent 模型 : Define on-to-one relationship using flag on child table

php - 如何使 PoEdit 正确解析自定义 "ngettext"实现?

php - 为两个单独的 DIV 标签分配 AJAX 响应

php - 如何允许用户在 html 页面上更新数据数据库 SQL

php - 查看 Swagger API 文档

php - 没有模型 [App\Products] Laravel 的查询结果

php - Laravel 6.x - 无法更新 Controller 方法中的表单(Nested-Child)

php - 为什么 Laravel 5.6 中不更新表列值?

laravel - 使用 whereHas 或其他类型的查询重构 3 个父子类别关系查询?

javascript - 如何在 javascript 中使用 php 变量