paupaul / ppadmin
Laravel admin panel plugin (Ppadmin) - installable via Composer
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0|^12.0
- laravel/framework: ^10.0|^11.0|^12.0
This package is not auto-updated.
Last update: 2026-04-05 15:37:40 UTC
README
Плагин добавляет в приложение Laravel админ-панель с CRUD по ресурсам. Устанавливается через Composer. Ресурсы определяются в приложении в пространстве имён App\Ppadmin.
Установка
1. Установка пакета
Локально (текущий репозиторий):
В composer.json вашего проекта добавьте репозиторий и пакет:
{
"repositories": [
{
"type": "path",
"url": "../ppadmin"
}
],
"require": {
"paupaul/ppadmin": "@dev"
}
}
Либо из корня монорепозитория (если ppadmin лежит в корне):
"repositories": [
{ "type": "path", "url": "./ppadmin" }
],
"require": {
"paupaul/ppadmin": "@dev"
}
Затем:
composer update paupaul/ppadmin
2. Создание связей (ресурсов админки)
После установки создайте папку и классы ресурсов в приложении:
php artisan ppadmin:install
Команда создаёт каталог app/Ppadmin и (при отсутствии) пример ресурса ExamplePpadmin.php. Далее:
- В
app/Ppadmin/добавляйте классы ресурсов с суффиксомPpadmin(например,ProductPpadmin,PromptPpadmin). - Каждый класс должен наследовать
Ppadmin\Models\Resource, указывать$model,$title,$searchи реализовывать методfields(Request $request)с полями изPpadmin\Models\Fields\*.
Пример минимального ресурса:
<?php
namespace App\Ppadmin;
use Illuminate\Http\Request;
use Ppadmin\Models\Resource;
use Ppadmin\Models\Fields\ID;
use Ppadmin\Models\Fields\Text;
class ProductPpadmin extends Resource
{
public static $model = \App\Models\Product::class;
public static $title = 'name';
public static $search = ['id', 'name'];
public static function label(): string
{
return 'Товар';
}
public function fields(Request $request): array
{
return [
ID::make()->sortable(),
Text::make('Название', 'name'),
];
}
}
Доступные поля: ID, Text, Textarea, Number, Date, Boolean, Select, File, Image, Heading, NestedForm (из пространства имён Ppadmin\Models\Fields).
При сохранении записей пакет вызывает у модели статический метод preUpdatedFields(array $data), если он объявлен — так можно фильтровать или дополнять данные перед create/update. Если метода нет, используются переданные поля как есть.
3. Маршруты и авторизация
- Маршруты регистрируются автоматически (префикс по умолчанию:
/ppadmin). - К маршрутам админки по умолчанию подключены middleware
webиauth— убедитесь, что в приложении настроена аутентификация и пользователь должен быть авторизован для доступа к админке.
4. Конфигурация (по желанию)
Опубликовать конфиг и изменить префикс или middleware:
php artisan vendor:publish --tag=ppadmin-config
В config/ppadmin.php:
route_prefix— префикс URL (по умолчаниюppadmin); можно задать черезPPADMIN_ROUTE_PREFIXв.env.middleware— массив middleware для маршрутов админки.
Использование в существующем проекте (yandex-gpt-integration)
Если вы переносите проект с уже существующей папкой ppadmin внутри приложения:
- Установите пакет
paupaul/ppadminиз папкиppadminв корне (как выше). - Удалите из
composer.jsonавтозагрузку"Ppadmin\\": "ppadmin/"и подключениеppadmin/routes.phpизRouteServiceProvider— маршруты и классы теперь идут из пакета. - Оставьте в приложении только
app/Ppadmin/с вашими ресурсами (например,PromptPpadmin,HistoryPpadminи т.д.). - При необходимости выполните
php artisan ppadmin:installи настройте конфиг (префикс/ middleware).
После этого связи в коде остаются те же: ресурсы в App\Ppadmin, наследование от Ppadmin\Models\Resource, поля из Ppadmin\Models\Fields\*.