Комплексное руководство по реализации активного класса в Laravel Links

В Laravel класс active используется для выделения текущей страницы или активной ссылки в меню навигации или других частях веб-сайта. Он предоставляет пользователям визуальную индикацию об их текущем местоположении на сайте. В этой статье мы рассмотрим различные методы реализации активного класса в ссылках Laravel, а также приведем примеры кода.

Метод 1: использование объекта Request
В этом методе мы сравниваем URL-адрес текущего запроса с URL-адресом ссылки и добавляем активный класс, если они совпадают.

<a href="{{ route('home') }}" class="{{ request()->is('home') ? 'active' : '' }}">Home</a>

Метод 2: использование фасада Route.
Фасад Routeпредоставляет методы для проверки текущего маршрута, что позволяет нам установить активный класс на основе имени маршрута. или узор.

<a href="{{ route('home') }}" class="{{ Route::currentRouteName() === 'home' ? 'active' : '' }}">Home</a>

Метод 3: использование промежуточного программного обеспечения
Вы можете создать собственное промежуточное программное обеспечение для обработки логики активного класса для нескольких ссылок. Промежуточное ПО проверяет текущий маршрут и соответствующим образом устанавливает активный класс.

// Create a new middleware class
php artisan make:middleware SetActiveClassMiddleware
// Add the logic in the handle method of SetActiveClassMiddleware
public function handle($request, Closure $next)
{
    $response = $next($request);
    if ($request->route()->getName() === 'home') {
        $response->setContent(str_replace('href="', 'class="active" href="', $response->getContent()));
    }
    return $response;
}
// Register the middleware in app/Http/Kernel.php
protected $middlewareGroups = [
    'web' => [
        // ...
        \App\Http\Middleware\SetActiveClassMiddleware::class,
    ],
];

Метод 4: использование директив Blade
Директивы Blade обеспечивают понятный и лаконичный способ реализации логики активного класса непосредственно в шаблонах Blade.

@active('home')
    <a href="{{ route('home') }}">Home</a>
@endactive
// Register the Blade directive in app/Providers/AppServiceProvider.php
public function boot()
{
    Blade::directive('active', function ($expression) {
        return "<?php echo request()->is($expression) ? 'active' : ''; ?>";
    });
}

Реализация активного класса в ссылках Laravel имеет решающее значение для улучшения пользовательского опыта и улучшения навигации по веб-сайту. В этой статье мы рассмотрели несколько методов, в том числе использование объекта Request, фасада Route, специального промежуточного программного обеспечения и директив Blade. Каждый метод имеет свои преимущества, поэтому выберите тот, который лучше всего соответствует требованиям вашего проекта. Используя эти методы, вы можете легко выделить активные ссылки в вашем приложении Laravel.