zebrainsteam / laravel-generator-package
Generator the composer package for Laravel
Requires (Dev)
- facade/ignition: ^2.3.6
- laravel/framework: ^8.0
- mockery/mockery: >=1.3
- orchestra/testbench: ^6.0
- phpunit/php-code-coverage: ^7.0
- phpunit/phpunit: ^8.5
This package is not auto-updated.
Last update: 2024-11-07 06:48:46 UTC
README
Laravel generator package - Генератор пакетов для Laravel
Главная задача пакета, автоматизировать генерацию кода для решения бизнес задач при разработке на фреймворке Laravel:
- Миграции
- (Опционально) Сиды (+factories)
- Модель
- CRUD интерфейс (без view для возможно переиспользовать в своих сценариях)
- (Опционально) Интерфейс для Laravel Admin + route
- (Опционально) Базовое API для работы с данными + route
- (Опционально) API для передачи архитектуры формы и фильтров для автоматизации frontend + route
- (Опционально) Базовые тесты
В отличии от других генераторов для Laravel, данный пакет:
- Упаковывает код в отдельный composer package.
- Возможность реализовать кастомные поля.
План работы
- Устанавливаем пакет Zebrainsteam/laravel-generator-package
- Настраиваем конфигурационный файл пакета, указав структуру и данные планируемых пакетов.
- Запускаем генератор и на выходе получаем сгенерированные пакеты в отдельных категориях готовые для публикации и последующего использования.
Install - Установка
composer require Zebrainsteam/laravel-generator-package
Конфигурационный файл
php artisan vendor:publish --force --provider="Zebrainsteam\LaravelGeneratorPackage\ServiceProvider" --tag="config"
Добавление ServiceProvider в config/app.php секция 'providers'
Zebrainsteam\LaravelGeneratorPackage\ServiceProvider::class,
Добавление миграций для словарей
php artisan migrate
Добавление стандартных словарей
php artisan db:seed --class="Zebrainsteam\LaravelGeneratorPackage\DataBase\Seeders\DatabaseSeeder"
Сборка пакетов из конфига
Все пакеты
php artisan lgp:make
Пакеты с конкретными vendor
php artisan lgp:make vendor_name
Конкретный пакет
php artisan lgp:make vendor_name/package_name
Настройка конфигурационного файла
fields - директива принимает массив классов, доступных в пакете полей (Fields). Заменяет стандартный набор.
Реализовать свое поле можно реализуя интерфейс FieldInterface или наследуя абстрактный класс FieldAbstract.
Пример:'fields' => [ 'text' => TextField::class, 'string' => StringField::class, 'integer' => IntegerField::class, 'float' => FloatField::class, ],
generator - многомерный массив, элемент массива - настройки отдельного пакета для генерации.
name - имя генерируемого пакета
description - описание генерируемого пакета
vendor - vendor генерируемого пакета (аккаунт в GIT)
package - имя package генерируемого пакета (репозиторий аккаунта в GIT)
model - имя модели в генерируем пакете
table - название таблицы в БД к которой будет привязана модель в генерируем пакете
generator - позволяет отключить генерацию тестов (tests), сидов и фабрик (seed), api общего (api), api lля предоставления информации для автоматизации frontend (api_frontend) и компонентов необходимых для работы пакета в Laravel Admin (laravel_admin)
form - cхема генерации формы для добавления/редактирования записей. Конечный элемент название поля.
filter - cхема генерации формы фильтров. Конечный элемент название поля.
fields - многомерный массив. Ключ - это имя поля в БД. Особенности настройки полей смотрите ниже.
Пример:
'generator' => [ [ 'name' => 'Name package', 'description' => 'Description package', 'vendor' => 'Zebrainsteam', 'package' => 'test', 'model' => 'test', 'table' => 'test', 'generator' => [ 'tests' => true, 'seed' => true, 'api' => true, 'api_frontend' => true, 'laravel_admin' => true, ], 'fields' => [ 'title' => [ НАСТРОЙКИ ПОЛЯ title ] ], 'form' => [ [ 'title', ], ], 'filter' => [ [ 'title', ], ] ] ]
Заполнение настроек отдельного поля
name_field_in_db - уникальное название в таблице базы данных
field - ключ используемого доступного поля из директивы 'fields'.
label - используемое имя / заголовок поля.
placeholder - placeholder для использования в html.
default - значение по умолчанию для поля.
index - Если установить true, то для столбца будет создан индекс.
fillable - добавляет поле в массив fillable создаваемой модели.
hidden - добавляет поле в массив hidden создаваемой модели для скрытия.
references - принимает 4 параметра для создания связи модели с моделью для другой таблицы. has - тип связи, model - путь с именем модели с которой будет создана связь, table - имя таблицы с которой будет создана связь, field - имя поля с которым будет создана связь.
param - по необязательное поле умолчанию null. Используется для передачи параметров для генерации некоторых field (например массив словарей для select форм или идентификатор словаря из БД).
filter - принимает параметры помогающие фильтровать и создавать проверку при работе модели:
filter['nullable'] - возможность записать в ячейку значение NULL
filter['unique'] - поле принимает только уникальное значение
filter['required'] - поле обязательное для заполнения
filter['max'] - максимальная длина значения для записи в БД
filter['min'] - минимальная длина значения для записи в БД
filter['mask'] - маска для проверки соответствия значения желаемому значению.
'name_field_in_db' => [ 'field' => 'text', 'label' => 'Title', 'placeholder' => 'Enter label', 'default' => null, 'index' => false, 'fillable' => true, 'hidden' => false, 'references' => [ 'model' => 'App\Models\User', 'table' => 'user', 'field' => 'id', 'has' => 'hasOne', ], 'param' => false, 'filter' => [ 'nullable' => true, 'unique' => false, 'required' => false, 'max' => null, 'min' => null, 'mask' => null, ] ]