Контроллеры и действия
Создавайте контроллеры с помощью artisan и обрабатывайте запросы в методах действий
«Контроллеры и действия» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое контроллер
Контроллер объединяет связанную логику обработки запросов. Вместо замыканий в файлах маршрутов передавайте обработку методам контроллера (действиям).
Создание контроллера
Используйте Artisan, чтобы создать каркас контроллера.
$ php artisan make:controller UserController
$ php artisan make:controller PostController --resourceБазовый контроллер
Контроллер наследует Controller и содержит открытые методы для каждого действия маршрута.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index(): \Illuminate\View\View
{
$users = User::all();
return view("users.index", compact("users"));
}
}Доступ к запросу
Укажите тип Illuminate\Http\Request в методе действия — Laravel автоматически передаст его.
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$name = $request->input("name");
$email = $request->input("email");
User::create(["name" => $name, "email" => $email]);
return redirect()->route("users.index");
}Проверка формы
Используйте $request->validate() для проверки входных данных. При ошибке Laravel автоматически перенаправит пользователя обратно и передаст ошибки.
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$validated = $request->validate([
"name" => "required|string|max:255",
"email" => "required|email|unique:users",
]);
User::create($validated);
return redirect()->route("users.index");
}Методы ресурсного контроллера
Ресурсный контроллер содержит 7 стандартных методов: index, create, store, show, edit, update, destroy.
Контроллеры с одним действием
Вызываемые контроллеры имеют один метод __invoke() — они идеально подходят для действий, выполняющих ровно одну задачу.
<?php
class SendWelcomeEmail extends Controller
{
public function __invoke(User $user): void
{
Mail::to($user)->send(new WelcomeMail($user));
}
}
// Route:
Route::post("/users/{user}/welcome", SendWelcomeEmail::class);Промежуточное ПО контроллера
Применяйте промежуточное ПО к определённым действиям с помощью метода middleware() в конструкторе.
<?php
public function __construct()
{
$this->middleware("auth")->except(["index", "show"]);
}Внедрение зависимостей
Указывайте типы служб в параметрах метода действия — Laravel получает их из контейнера служб.
<?php
public function store(Request $request, Mailer $mailer): JsonResponse
{
// $mailer is auto-injected
}Возврат ответов
Контроллеры могут возвращать представления, перенаправления, ответы в формате JSON и скачиваемые файлы.
<?php
return view("users.show", compact("user"));
return redirect()->back()->with("status", "Saved!");
return response()->json($user);
return response()->download(storage_path("report.pdf"));Пространства имён контроллеров
По умолчанию все контроллеры находятся в App\Http\Controllers. Вложенные каталоги создают дочерние пространства имён: App\Http\Controllers\Admin\UserController.
Поддерживайте контроллеры компактными
Контроллеры должны передавать бизнес-логику службам или отдельным действиям. Стремитесь к тому, чтобы контроллеры только проверяли входные данные, вызывали службу и возвращали ответ.
Итоги
Создавайте контроллеры с помощью Artisan. Указывайте типы Request и служб для автоматического внедрения. Используйте validate() для проверки входных данных. Поддерживайте контроллеры компактными — передавайте логику службам.
Быстрая проверка
Какая команда Artisan создаёт ресурсный контроллер?
Изучай PHP с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 49
- Уроки
- 195
Часто задаваемые вопросы
Урок «Контроллеры и действия» бесплатный?
Да — полный текст урока «Контроллеры и действия» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Контроллеры и действия»?
Создавайте контроллеры с помощью artisan и обрабатывайте запросы в методах действий Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Контроллеры и действия»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура проекта Laravel
- Определение маршрутов в Laravel
- Контроллеры и действия
- Шаблоны и представления Blade