В 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.