"Создание контроллеров и обработка Request-запросов в Laravel"
Контроллеры в Laravel помогают организовать бизнес-логику приложения и отделить её от маршрутов.
В этой статье разберём:
- как создать Laravel controller;
- как обрабатывать Request;
- получение данных формы;
- валидацию;
- redirect;
- работу с HTTP-запросами.
Что такое Laravel Controller
Controller — это класс, который обрабатывает HTTP-запросы.
Контроллеры находятся в:
app/Http/Controllers
Как создать Controller в Laravel
Команда:
php artisan make:controller PostController
Laravel создаст:
app/Http/Controllers/PostController.php
Пример Controller
namespace App\Http\Controllers;
class PostController extends Controller
{
public function index()
{
return 'Posts page';
}
}
Подключение Controller к Route
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);
Laravel Request — обработка входящих данных
Laravel request используется для получения данных из HTTP-запроса.
Внедрение Request
use Illuminate\Http\Request;
public function store(Request $request)
{
$title = $request->title;
return $title;
}
Получение input данных
Все данные
$request->all();
Конкретное поле
$request->input('email');
Проверка существования
$request->has('email');
Валидация Request
Laravel имеет встроенную систему validation.
Пример валидации
$request->validate([
'title' => 'required|max:255',
'email' => 'required|email',
]);
Redirect после запроса
Laravel redirect используется после форм и CRUD-операций.
return redirect('/posts');
Redirect с сообщением
return redirect()
->route('posts.index')
->with('success', 'Post created');
Работа с файлами
Upload файлов
$file = $request->file('image');
Сохранение файла
$path = $file->store('images');
Resource Controllers
Laravel умеет автоматически создавать CRUD controller.
php artisan make:controller PostController --resource
Создаются методы:
- index
- create
- store
- show
- edit
- update
- destroy
API Controllers
Для API:
php artisan make:controller Api/PostController --api
Dependency Injection в Controllers
Laravel автоматически внедряет зависимости.
Пример:
public function store(Request $request, PostService $service)
{
//
}
Лучшие практики Controllers
Рекомендуется:
- держать controller тонким;
- выносить бизнес-логику в services;
- использовать form requests;
- минимизировать SQL в controller;
- использовать dependency injection.
Form Request Validation
Laravel поддерживает отдельные validation classes.
Создание:
php artisan make:request StorePostRequest
Это помогает поддерживать чистую архитектуру.
Итоги
Laravel controllers и Request-система делают обработку HTTP-запросов простой и удобной.
Используя:
- controllers;
- request validation;
- redirect;
- dependency injection;
можно создавать чистые и масштабируемые Laravel-приложения.