Розумне виявлення маршрутів у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 13 лютого, 2025
Ви коли-небудь замислювалися, як зробити навігацію у вашій Laravel-аплікації динамічною та інтуїтивно зрозумілою? У нашій статті ми розглянемо, як використовувати метод "named" для спрощення логіки маршрутів, а також створення адаптивних компонентів у вашому коді. Читайте далі, щоб дізнатися, як зробити ваш додаток ще більш ефективним і зручним

Метод з назвою в 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>

Метод з назвою спрощує логіку на основі маршрутів, роблячи ваш код більш підтримуваним та зменшуючи складність функцій, залежних від маршрутів

Популярні

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку