Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Маршрутизация и контроллеры в Laravel

Студент научится настраивать маршруты приложения в web.php и создавать контроллеры для обработки HTTP-запросов пользователя.

Прогресс урока: 0%
Основы маршрутизации. Жизненный цикл запроса в Laravel начинается с маршрутизатора. Файл routes/web.php действует как диспетчер, который анализирует URL, введенный пользователем, и определяет, какой код должен быть выполнен. Маршрутизатор позволяет определять пути для различных HTTP-методов: GET (получение данных, просмотр страницы), POST (отправка данных формы, создание ресурса), PUT/PATCH (обновление) и DELETE. Например, маршрут Route::get('/products', ...) сработает, когда клиент зайдет на страницу каталога. В Laravel можно передавать логику прямо в маршрут с помощью анонимной функции (Closure), но для сложных систем, таких как интернет-магазин, это считается антипаттерном. Вместо этого мы связываем маршруты с методами контроллеров. Маршруты также поддерживают передачу параметров. Если мы хотим просмотреть конкретный товар, мы создаем маршрут вида Route::get('/product/{id}', ...), где {id} — это динамический сегмент URL, который будет передан в качестве аргумента в метод контроллера. Метод Project-Based Learning требует от нас сразу связывать теорию с практикой: все URL нашего магазина должны быть человекопонятными (ЧПУ).
php
// routes/web.php
use App\Http\Controllers\ProductController;

// Базовый маршрут для главной страницы
Route::get('/', function () {
    return view('welcome');
});

// Маршрут каталога товаров, привязанный к контроллеру
Route::get('/products', [ProductController::class, 'index'])->name('products.index');
Контроллеры и их создание. Контроллеры группируют связанную логику обработки запросов в один класс. Для генерации контроллера мы используем консольную утилиту Artisan: php artisan make:controller ProductController. Внутри контроллера мы создаем методы (actions), которые соответствуют маршрутам. Стандартный набор методов для CRUD-операций (Create, Read, Update, Delete) включает: index (вывод списка), show (вывод одного элемента), create (форма создания), store (сохранение в БД), edit (форма редактирования), update (обновление) и destroy (удаление). В методе index контроллера ProductController мы обращаемся к базе данных (позже через модель), получаем массив товаров и передаем его в функцию view(), которая рендерит HTML-шаблон. Использование функции name('products.index') при определении маршрута — это лучшая практика. Именованные маршруты позволяют генерировать URL в шаблонах с помощью функции route('products.index'). Если в будущем мы решим изменить URL с '/products' на '/catalog', нам нужно будет изменить это только в одном месте (в web.php), а все ссылки в шаблонах обновятся автоматически.
php
// app/Http/Controllers/ProductController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProductController extends Controller {
    public function index() {
        // Временный массив данных для примера (до изучения БД)
        $products = [
            ['id' => 1, 'name' => 'Laptop', 'price' => 1000],
            ['id' => 2, 'name' => 'Smartphone', 'price' => 500]
        ];
        return view('products.index', ['products' => $products]);
    }
}
Middleware (Посредники) и защита маршрутов. Middleware — это механизм фильтрации HTTP-запросов, поступающих в ваше приложение. Представьте его как контрольно-пропускной пункт. Если пользователь пытается получить доступ к странице оформления заказа (/checkout) или своему профилю (/profile), система должна убедиться, что он авторизован. В Laravel для этого есть встроенный middleware с именем 'auth'. Мы можем применять middleware к отдельным маршрутам или объединять маршруты в группы. Использование Route::middleware('auth')->group(...) позволяет применить проверку авторизации сразу к нескольким путям. Если неавторизованный гость попытается зайти на такой маршрут, middleware 'auth' перехватит запрос и автоматически перенаправит его на страницу логина (login route). Это избавляет нас от необходимости писать проверки авторизации (if (!Auth::check())) внутри каждого метода контроллера, сохраняя код чистым и соответствующим принципу DRY (Don't Repeat Yourself).
php
// routes/web.php (Защита маршрутов профиля и оформления заказа)
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\CheckoutController;

Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'index'])->name('profile');
    Route::get('/checkout', [CheckoutController::class, 'index'])->name('checkout');
    Route::post('/checkout', [CheckoutController::class, 'process'])->name('checkout.process');
});

Напишите консольную команду (Artisan), которая используется для создания нового контроллера с именем CartController.

Какова основная цель использования именованных маршрутов (например, ->name('checkout')) в Laravel?