Маршрути у фреймворку Laravel
Laravel — один з найпопулярніших фреймворків для PHP, і одна з причин його успіху — інтуїтивно зрозуміла система маршрутизації. У Laravel маршрути є точками входу до вашого додатку, дозволяючи вам визначити, як обробляються запити та направляються до відповідної логіки.
Цей посібник проведе вас через основи маршрутизації в Laravel, від базових понять до більш складних технік.
Що таке маршрути в Laravel?
Маршрути в Laravel визначаються в директорії routes/
. За замовчуванням файл web.php
обробляє маршрути для веб-додатків, тоді як файл api.php
використовується для маршрутів API.
Маршрути визначають URL вашого додатку та вказують контролер або логіку, яка повинна їх обробляти.
Основна маршрутизація
Ви можете визначити простий маршрут за допомогою методу Route::get
.
Приклад:
use Illuminate\Support\Facades\Route;
Route::get('/welcome', function () {
return 'Welcome to Laravel!';
});
Перехід за адресою http://yourdomain.com/welcome
покаже текст "Welcome to Laravel!".
HTTP методи
Laravel підтримує різні HTTP методи для маршрутизації:
Route::get()
Route::post()
Route::put()
Route::patch()
Route::delete()
Route::options()
Приклад:
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ExampleController;
Route::get('/example', [ExampleController::class, 'index']); // GET запит
Route::post('/example', [ExampleController::class, 'store']); // POST запит
Route::put('/example/{id}', [ExampleController::class, 'update']); // PUT запит (повне оновлення)
Route::patch('/example/{id}', [ExampleController::class, 'modify']); // PATCH запит (часткове оновлення)
Route::delete('/example/{id}', [ExampleController::class, 'destroy']); // DELETE запит
Route::options('/example', [ExampleController::class, 'options']); // OPTIONS запит
Тестування маршрутів:
- GET
/example
→ Отримує дані. - POST
/example
→ Створює нові дані (передаємо тіло запиту). - PUT
/example/{id}
→ Оновлює всі дані для заданого ID. - PATCH
/example/{id}
→ Оновлює частину даних для заданого ID. - DELETE
/example/{id}
→ Видаляє дані для заданого ID. - OPTIONS
/example
→ Показує підтримувані HTTP методи.
Параметри маршруту
Обов'язкові параметри
Ви можете передавати динамічні значення до маршрутів за допомогою місць-заповнювачів.
Приклад:
Route::get('/user/{id}', function ($id) {
return "User ID: $id";
});
Перехід за адресою /user/5
покаже "User ID: 5".
Необов'язкові параметри
Ви можете зробити параметр маршруту необов'язковим, додавши ?
і надавши значення за замовчуванням.
Приклад:
Route::get('/user/{name?}', function ($name = 'Guest') {
return "Hello, $name!";
});
Перехід за адресою /user
покаже "Hello, Guest!".
Іменовані маршрути
Іменовані маршрути спрощують генерацію URL та перенаправлення користувачів.
Визначення іменованого маршруту:
Route::get('/dashboard', function () {
return 'Dashboard Page';
})->name('dashboard');
Генерація URL для іменованого маршруту:
$url = route('dashboard');
Перенаправлення на іменований маршрут:
return redirect()->route('dashboard');
Групи маршрутів
Групи маршрутів дозволяють спільно використовувати атрибути, такі як посередники (middleware) або префікси, для кількох маршрутів.
Групування з посередниками (middleware)
Route::middleware(['auth'])->group(function () {
Route::get('/profile', function () {
return 'User Profile';
});
Route::get('/settings', function () {
return 'Settings Page';
});
});
Маршрути /profile
та /settings
тепер вимагають посередника auth
.
Групування з префіксом
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () {
return 'Admin Dashboard';
});
Route::get('/users', function () {
return 'Manage Users';
});
});
Ці маршрути будуть доступні як /admin/dashboard
та /admin/users
.
Контролери маршрутів
Використання контролерів допомагає тримати файл маршрутів чистим та розділяє логіку на керовані компоненти.
Визначення маршруту з контролером
use App\Http\Controllers\UserController;
Route::get('/user/{id}', [UserController::class, 'show']);
Приклад методу контролера:
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($id)
{
return "Displaying user with ID: $id";
}
}
Ресурсні маршрути
Ресурсні маршрути дозволяють визначати маршрути для основних операцій CRUD одним рядком.
Приклад:
use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);
Це генерує маршрути для дій index, create, store, show, edit, update та destroy.
Згенеровані маршрути:
GET /posts -> index
GET /posts/create -> create
POST /posts -> store
GET /posts/{post} -> show
GET /posts/{post}/edit -> edit
PUT /posts/{post} -> update
DELETE /posts/{post} -> destroy
API маршрути
API маршрути визначаються в routes/api.php
і автоматично отримують префікс /api
.
Приклад:
Route::get('/products', function () {
return ['Product 1', 'Product 2', 'Product 3'];
});
Перехід за адресою http://yourdomain.com/api/products
поверне масив у форматі JSON.
Прив'язка моделей до маршрутів
Laravel дозволяє автоматично інжектити моделі в маршрути на основі параметрів.
Приклад:
use App\Models\User;
Route::get('/user/{user}', function (User $user) {
return $user->name;
});
Тут Laravel автоматично отримує екземпляр моделі User
, який відповідає параметру {user}
.
Кешування маршрутів
Для виробничих середовищ ви можете кешувати маршрути для покращення продуктивності.
Кешування маршрутів:
php artisan route:cache
Очищення кешу маршрутів:
php artisan route:clear
Висновок
Маршрутизаційна система Laravel є потужною та гнучкою, що дозволяє будувати додатки будь-якої складності.
Опанувавши різні можливості маршрутизації, ви не тільки прискорите розробку, а й напишете чистіший і більш підтримуваний код.
Яку можливість маршрутизації Laravel ви використовуєте найчастіше? Поділіться в коментарях!
Підписатися на Youtube: https://www.youtube.com/@ProgrammingWithRoki
Придбати домен та хостинг: Hostinger
Успіхів у програмуванні
Перекладено з: Different Ways to Write the Laravel Routes