Skip to content

Скаффолдинг и генерация

Каркас, который печатать вручную дорого и бессмысленно. Генерируем — правим уникальное.

Artisan-генераторы: базовый набор

Одна команда создаёт согласованный набор классов — это быстрее и надёжнее ручного создания.

bash
# Модель + миграция + фабрика + сидер + FormRequest'ы + контроллер + policy разом
php artisan make:model Organization -mfsc --requests --policy

# Разбор флагов:
#   -m  миграция      -f  фабрика       -s  сидер
#   -c  контроллер    --requests Store+Update FormRequest   --policy
НужноКоманда
Ресурсный контроллерmake:controller XController --resource --model=X
FormRequestmake:request StoreXRequest
Сервис (нет из коробки — свой stub)см. ниже «Кастомные stubs»
Enummake:enum XStatus
Кастmake:cast MoneyCast
Job / Event / Listener / Notificationmake:job, make:event, make:listener, make:notification
Observer / Policy / Rulemake:observer, make:policy, make:rule
Тест (Pest)make:test XTest --pest

Правило студии: сгенерированный каркас сразу привести к стандартам — declare(strict_types=1), $casts, обе стороны связей, FormRequest вместо валидации в контроллере. Генератор даёт скелет, стандарт — мясо.

Кастомные stubs — генерация «по-студийному»

artisan stub:publish выкладывает шаблоны генераторов в stubs/. Один раз отредактировать под конвенции студии — дальше каждый make:model создаёт файл уже с declare(strict_types=1), нужными трейтами и заготовкой $casts.

bash
php artisan stub:publish
# отредактировать stubs/model.stub, stubs/request.stub и т.д.

Окупается на 3–4 проекте: перестаёшь править одно и то же после каждого генератора.

Filament — главный ускоритель админки

Ресурс из коробки = список + создание + редактирование + удаление + фильтры.

bash
# Полный CRUD-ресурс из модели (с генерацией полей формы и колонок таблицы)
php artisan make:filament-resource Organization --generate

# --generate читает $fillable/$casts/схему и создаёт форму и таблицу автоматически
# --view добавляет страницу просмотра, --soft-deletes — корзину

Дальше — точечная доводка по спецификации Filament: русские лейблы, секции формы, afterSave со сбросом кеш-тегов, SpatieMediaLibraryFileUpload для медиа.

Прочие генераторы Filament:

bash
php artisan make:filament-page Dashboard
php artisan make:filament-widget StatsOverview --stats-overview
php artisan make:filament-relation-manager OrganizationResource reviews title

Laravel Boost — генерация с контекстом проекта

Boost (MCP-сервер, приоритет №1 по спецификации MCP) даёт Claude Code структуру БД, доки и app-info в компактном виде — генерация кода получается сразу под реальную схему, а не «наугад». Практика: перед make:* спрашивать у Boost схему таблицы, чтобы $casts и поля формы совпали с БД с первого раза.

Frontend-скаффолдинг

ЗадачаБыстрый путь
Аутентификация (логин/регистрация/сброс)laravel/breeze (Blade/Livewire/Inertia) — минуты
Команды, 2FA, API-токеныlaravel/jetstream
Vite + TailwindИдут в стартер-китах; вручную — npm create vite не нужен
SVG-иконкиblade-icons + blade-heroicons (по стандарту — только SVG, не emoji)
Livewire-интерактив без сборкиlivewire/volt (однофайловые компоненты)

Что генерировать нельзя (писать руками)

  • Доменную логику сервисов/действий — генератор даёт пустой класс, содержимое думается.
  • Сложные миграции больших таблиц (CONCURRENTLY-индексы, generated columns) — по спецификации миграций, не из stub.
  • Бизнес-правила валидации — генерируется класс FormRequest, правила пишутся осознанно.

Мини-рецепт: новая сущность за 15 минут

bash
# 1. Каркас
php artisan make:model Review -mf --requests
# 2. Миграция: поля, FK constrained()+index(), $table->timestamps()
# 3. Модель: $fillable, $casts, belongsTo(Organization), scopeApproved
# 4. Filament
php artisan make:filament-resource Review --generate
# 5. Доводка ресурса: лейблы RU, секции, afterSave -> Cache::tags flush
# 6. Тест
php artisan make:test ReviewTest --pest   # GET 200, POST валидация, сохранение
# 7. Проверки
./vendor/bin/pint && php artisan test --filter=ReviewTest

Внутренняя база знаний студии