Починаючи з Laravel 11, конфігурація middleware була перенесена з HTTP Kernel у файл bootstrap вашого застосунку. Хоча деякі вже існуючі програми, що оновилися з Laravel 10 до Laravel 11 чи 12, можуть містити визначені middleware, новий Laravel застосунок не постачається з теками app/Http/Middleware.
Laravel 11 представляє нову стандартну структуру застосунку з меншою кількістю файлів. Зокрема, нові задекларовані Laravel застосунки містять менше сервісних провайдерів, middleware та файлів конфігурації.
Однак ми не рекомендуємо тим, хто оновлює Laravel 10 до 11, намагатися змінити структуру свого застосунку, адже Laravel 11 ретельно налаштований і також підтримує структуру застосунку Laravel 10.
Не лякайтеся, якщо ваш застосунок містить стандартні middleware від Laravel. Це може означати, що ваш застосунок оновився до останньої версії, але зберіг згенеровані middleware у своїй структурі.
Конфігурація всіх middleware у Laravel тепер виконується у файлі bootstrap/app.php за допомогою методу withMiddleware(). З цього файлу ви можете визначати глобальні middleware, додавати, попереджати, створювати псевдоніми тощо.
Якщо ви переходите з Laravel 10, для конфігурації маршрутів ви використовували файл app/Http/Kernel.php і властивість класу. Для глобальних middleware використовувалася властивість $middleware:
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
У Laravel 11 клас Kernel більше не є частиною коду застосунку. Ось приклад визначення глобального middleware:
// bootstrap/app.php
use App\Http\Middleware\LogRequest;
->withMiddleware(function (Middleware $middleware) {
// Додати в кінець стеку middleware
$middleware->append(LogRequest::class);
})
Щоб додати глобальний middleware на початку стеку, ви можете скористатися методом prepend:
use App\Http\Middleware\LogRequest;
->withMiddleware(function (Middleware $middleware) {
// Додати middleware на початку стеку
$middleware->prepend(LogRequest::class);
})
У Laravel 10 та раніше групу middleware визначали за допомогою властивості груп middleware у файлі app/Http/Kernel.php:
protected $middlewareGroups = [
'web' => [
// ...
],
'api' => [
// ...
],
'group-1' => [
// ...
],
];
У нових застосунках Laravel ви можете використовувати методи prepend/append для групування:
$middleware->prependToGroup('group-1', First::class);
$middleware->appendToGroup('group-1', [
First::class,
Second::class,
]);
Виникає також питання: "Як я можу налаштувати одну з вбудованих груп, таких як web або api?" Ви можете зробити це, використавши відповідні методи web і api:
$middleware->web(append: [
ExampleWebMiddleware::class,
]);
$middleware->api(prepend: [
ExampleApiMiddleware::class,
]);
$middleware->api(remove: [
ExampleApiMiddleware::class,
]);
У Laravel 10 пріоритет middleware визначався через властивість $middlewarePriority у файлі HTTP Kernel.php:
protected $middlewarePriority = [
\Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
// ...
];
Як ви могли здогадатися, пріоритет тепер налаштовується у файлі bootstrap/app.php за допомогою методу priority:
->withMiddleware(function (Middleware $middleware) {
$middleware->priority([
//
]);
});
У Laravel 10 ви використовували властивість $middlewareAliases класу Kernel для мапування псевдонімів до middleware, що полегшує додавання middleware до маршрутів і груп:
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
// ...
];
Починаючи з Laravel 11, для цього ви повинні використовувати метод alias:
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'log' => LogRequest::class
]);
});
// У маршруті ви можете використовувати `log`
Route::get('/messages/{message}', function () {
// ...
})->middleware('log');
Усе про визначення, налаштування та використання middleware ви можете дізнатися в документації Laravel. Також перевірте документацію Middleware для Laravel 12, але обов'язково використовуйте відповідну документацію для вашої версії Laravel
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше