PHP Academy · Урок

Контроллеры и действия

Создавайте контроллеры с помощью artisan и обрабатывайте запросы в методах действий

Урок 3 из 414 шагов

«Контроллеры и действия» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Структура проекта Laravel
  2. Определение маршрутов в Laravel
  3. Контроллеры и действия
  4. Шаблоны и представления Blade
← Назад к PHP Academy