Метод з назвою в Laravel забезпечує простий спосіб визначити, чи відповідає поточний запит певній назві маршруту. Ця потужна можливість дозволяє виконувати умовну логіку на основі активного маршруту, що є чудовим для аналітики, підсвічування навігації чи перевірки прав доступу.
Особливо цінним цей підхід стає при створенні компонентів, які повинні функціонувати по-різному в залежності від активного маршруту, без необхідності повторювати умовні перевірки в усьому додатку.
if ($request->route()->named('dashboard')) {
// Ми на панелі керування
}
Ось практичний приклад реалізації динамічних станів навігації:
<?php
namespace App\View\Components;
use Illuminate\View\Component;
use Illuminate\Http\Request;
class NavigationMenu extends Component
{
public function __construct(private Request $request)
{
}
public function isActive(string $routeName): bool
{
return $this->request->route()->named($routeName);
}
public function isActiveSection(string $section): bool
{
return $this->request->route()->named("$section.*");
}
public function render()
{
return view('components.navigation-menu', [
'sections' => [
'dashboard' => [
'label' => 'Панель приладів',
'route' => 'dashboard',
'active' => $this->isActive('dashboard')
],
'posts' => [
'label' => 'Блог',
'route' => 'posts.index',
'active' => $this->isActiveSection('posts')
],
'settings' => [
'label' => 'Налаштування',
'route' => 'settings.index',
'active' => $this->isActiveSection('settings')
]
]
]);
}
}
Коли ви використовуєте цей компонент у своєму додатку, навігаційне меню автоматично визначає активний маршрут і оновлюється відповідно:
<!-- navigation-menu.blade.php -->
<nav>
@foreach($sections as $key => $section)
<a href="{{ route($section['route']) }}"
@class(['nav-link', 'active' => $section['active']])>
{{ $section['label'] }}
</a>
@endforeach
</nav>
Метод з назвою спрощує логіку на основі маршрутів, роблячи ваш код більш підтримуваним та зменшуючи складність функцій, залежних від маршрутів