Тема
Скаффолдинг и генерация
Каркас, который печатать вручную дорого и бессмысленно. Генерируем — правим уникальное.
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 |
| FormRequest | make:request StoreXRequest |
| Сервис (нет из коробки — свой stub) | см. ниже «Кастомные stubs» |
| Enum | make:enum XStatus |
| Каст | make:cast MoneyCast |
| Job / Event / Listener / Notification | make:job, make:event, make:listener, make:notification |
| Observer / Policy / Rule | make: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 titleLaravel 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