garbuzivan / laravel-generator-package
Generator the composer package for Laravel
Installs: 250
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/garbuzivan/laravel-generator-package
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 auto-updated.
Last update: 2021-09-11 19:46:33 UTC
README
Laravel generator package - Генератор пакетов для Laravel
Главная задача пакета, автоматизировать генерацию кода для решения бизнес задач при разработке на фреймворке Laravel:
- Миграции
- (Опционально) Сиды (+factories)
- Модель
- CRUD интерфейс (без view для возможно переиспользовать в своих сценариях)
- (Опционально) Интерфейс для Laravel Admin + route
- (Опционально) Базовое API для работы с данными + route
- (Опционально) API для передачи архитектуры формы и фильтров для автоматизации frontend + route
- (Опционально) Базовые тесты
В отличии от других генераторов для Laravel, данный пакет:
- Упаковывает код в отдельный composer package.
- Возможность реализовать кастомные поля.
План работы
- Устанавливаем пакет garbuzivan/laravel-generator-package
- Настраиваем конфигурационный файл пакета, указав структуру и данные планируемых пакетов.
- Запускаем генератор и на выходе получаем сгенерированные пакеты в отдельных категориях готовые для публикации и последующего использования.
Install - Установка
composer require garbuzivan/laravel-generator-package
Конфигурационный файл
php artisan vendor:publish --force --provider="GarbuzIvan\LaravelGeneratorPackage\ServiceProvider" --tag="config"
Добавление ServiceProvider в config/app.php секция 'providers'
GarbuzIvan\LaravelGeneratorPackage\ServiceProvider::class,
Добавление миграций для словарей
php artisan migrate
Добавление стандартных словарей
php artisan db:seed --class="GarbuzIvan\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' => 'garbuzivan',
'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,
]
]