Административная панель для каталога автомобилей. Laravel 13 + AdminLTE. Ориентировочно: авторынок / автосалон, продажа авто из Японии и других стран.
Установлено:
jeroennoten/laravel-adminlte — UI, опубликованы auth-вьюхиНастроено:
APP_NAME, APP_URL, MySQL-подключение (tocha_app, root, localhost:3306)Создано:
app/Http/Controllers/Admin/LoginController.php — вход/выход; авторизация по name, не emailapp/Http/Middleware/EnsureUserIsAdmin.php — проверка is_admin; редирект на /admin/logindatabase/migrations/2026_05_06_145556_add_is_admin_to_users_table.php — флаг is_admin в usersdatabase/seeders/AdminSeeder.php — создаёт пользователя admin/1234resources/views/admin/login.blade.php — форма входа (AdminLTE auth-page)Изменено:
routes/web.php — добавлена группа /admin/* с middleware 'admin'app/Models/User.php — добавлен is_admin в FillableРегистрация middleware: bootstrap/app.php → withMiddleware() → alias 'admin'
Создано:
app/Http/Controllers/Admin/DashboardController.php — GET /admin/ → admin.dashboardresources/views/admin/dashboard.blade.php — приветствие с именем пользователяСоздано:
database/migrations/2026_05_06_151148_create_dict_sections_table.php
— разделы справочников: code, label, is_system, is_hierarchical, sort_orderdatabase/migrations/2026_05_06_151148_create_dict_values_table.php
— значения: section_id (FK cascade), parent_id (самоссылка, FK cascade), value, sort_orderapp/Models/DictSection.php — values() (корневые), allValues() (все)app/Models/DictValue.php — section(), parent(), children()app/Http/Controllers/Admin/ManualController.php — CRUD разделов + CRUD значенийdatabase/seeders/DictionarySeeder.php — 8 системных разделов, 30+ марок с моделямиresources/views/admin/manuals/index.blade.php — список разделовresources/views/admin/manuals/section_form.blade.php — форма раздела (create/edit)resources/views/admin/manuals/values.blade.php — список значений (плоский + иерархический)resources/views/admin/manuals/value_form.blade.php — форма значения (create/edit)Структура справочников:
dict_sections: makes (иерархия), body_types, countries, cities, colors_ext, colors_int, engine_volumes, options
dict_values: Toyota → [Camry, Corolla, ...], Nissan → [...], ...
Создано:
database/migrations/2026_05_06_151148_create_cars_table.php
— полная схема: статус, марка/модель, технические характеристики, цены, фото (JSON-массив)app/Models/Car.php — $fillable, $casts (boolean, array), акцессоры status_label/condition_labelapp/Http/Controllers/Admin/CarController.php — полный CRUD:
index() — список с поиском + фильтрами + пагинация 20create()/edit() — форма с данными из справочниковstore()/update() — validated() + handlePhotos()destroy() — удаление записи + файлов с дискаhandlePhotos() — загрузка/замена main-фото и галереи, удаление выбранныхresources/views/admin/cars/index.blade.php — таблица с фильтрами и превью фотоresources/views/admin/cars/form.blade.php — большая форма (6 секций), JS-фильтрация моделейGET / → welcome
GET /admin/login → LoginController::showLoginForm
POST /admin/login → LoginController::login
POST /admin/logout → LoginController::logout
[middleware: admin]
GET /admin/ → DashboardController::index (admin.dashboard)
/admin/cars → CarController (resource) (admin.cars.*)
/admin/manuals/ → ManualController::index (admin.manuals.index)
/admin/manuals/sections/* → ManualController::section* (admin.manuals.section.*)
/admin/manuals/{section}/values/* → ManualController::value* (admin.manuals.value.*)
storage/app/public/cars/{id}/main/ ← главное фото (1 файл)
storage/app/public/cars/{id}/gallery/ ← галерея (N файлов)
public/storage/ → symlink (php artisan storage:link)
php artisan migrate # применить миграции
php artisan db:seed # создать admin + заполнить справочники
php artisan storage:link # доступ к фото через /storage/...
php artisan serve # запуск сервера (http://localhost:8000)
./vendor/bin/pint # форматирование PHP-кода