Покращення визначення маршрутів у Laravel з інтеграцією Enum

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

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

Тепер, працюючи з іменами маршрутів або доменами, ви можете передавати enum case безпосередньо в методи маршрутизації Laravel, спростивши визначення маршрутів без втрати переваг перевірки типу enums.

enum RouteSection: string
{
    case Admin = 'admin';
    case Client = 'client';
    case Public = 'public';
}
 
Route::prefix(RouteSection::Admin)
    ->group(function () {
        // Маршрути для адміністратора
    });

Розглянемо практичний приклад організації маршрутів у багатопортальному додатку:

<?php
 
namespace App\Routing;
 
use App\Http\Controllers\Portal;
 
enum PortalType: string
{
    case Student = 'student.university.edu';
    case Faculty = 'faculty.university.edu';
    case Admin = 'admin.university.edu';
}
 
enum PortalSection: string
{
    case Dashboard = 'dashboard';
    case Resources = 'resources';
    case Profile = 'profile';
}
 
// Налаштування маршрутів
Route::domain(PortalType::Student)
    ->middleware(['auth', 'student'])
    ->group(function () {
        Route::get('/', [Portal\StudentController::class, 'index'])
            ->name(PortalSection::Dashboard);
 
        Route::get('/materials', [Portal\ResourceController::class, 'index'])
            ->name(PortalSection::Resources);
 
        Route::get('/profile', [Portal\ProfileController::class, 'show'])
            ->name(PortalSection::Profile);
});
 
Route::domain(PortalType::Faculty)
    ->middleware(['auth', 'faculty'])
    ->group(function () {
        // Маршрути для порталу факультету, використовуючи ті ж enums
        Route::get('/', [Portal\FacultyController::class, 'index'])
            ->name(PortalSection::Dashboard);
});

Підтримка enum у визначеннях маршрутів покращує читабельність коду, зберігаючи переваги типового контролю та автозаповнення, які надають enums у PHP.

Популярні

Logomark Logotype

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

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

Logomark Logotype

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!