Установка активного класса для пунктов меню динамически в laravel - PullRequest
1 голос
/ 27 апреля 2020

Я создаю приложение laravel, используя bootstrap 4.

У меня есть главное меню навигации в app.blade.php. И у меня есть четыре основных блейда: О, Продукт, Контакт и Блог.

Тогда мне нужно было изменить активный класс пункта меню в соответствии с текущей страницей. Поскольку меню загружалось динамически из app.blade.php, мне пришлось динамически устанавливать активный класс для текущей страницы в навигационном меню.

То, что я делал, было в каждом блейде, в котором я определил переменную с именем $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>

Так что это работает правильно ..

но я хочу знать, это правильный способ сделать это и каковы другие возможные способы выполнить мое требование

1 Ответ

1 голос
/ 27 апреля 2020

Вместо определения переменной $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 ссылки, и вы не не нужно определять дополнительный фрагмент данных где-то еще в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...