Download the PHP package mrzlanx532/laravel-basic-components without Composer
On this page you can find all versions of the php package mrzlanx532/laravel-basic-components. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mrzlanx532/laravel-basic-components
More information about mrzlanx532/laravel-basic-components
Files in mrzlanx532/laravel-basic-components
Package laravel-basic-components
Short Description Laravel basic components
License MIT
Homepage https://github.com/mrzlanx532/laravel-basic-components
Informations about the package laravel-basic-components
Оглавление
- Установка
- Важно
- Компоненты и как их использовать
- Трейт
UploadImages(Mrzlanx532\LaravelBasicComponents\Traits\Model\UploadImages\UploadImages) - Трейт
UploadFile(Mrzlanx532\LaravelBasicComponents\Traits\Model\UploadFile\UploadFile) - Класс
Service(Mrzlanx532\LaravelBasicComponents\Service) - Класс
Definition(Mrzlanx532\LaravelBasicComponents\Definition\Definition) - Класс
PanelForm(Mrzlanx532\LaravelBasicComponents\PanelForm\PanelForm) - Класс
QueryBuilder(Mrzlanx532\LaravelBasicComponents\QueryBuilder) - Класс
PanelSet(Mrzlanx532\LaravelBasicComponents\PanelSet\PanelSet) - Класс
PanelSetSortable(Mrzlanx532\LaravelBasicComponents\PanelSetSortable\PanelSetSortable) - Класс
BrowserFilterPresetController(Mrzlanx532\LaravelBasicComponents\Controllers\BrowserFilterPresetController)
- Трейт
Установка
- Устанавливаем пакет:
composer require mrzlanx532/laravel-basic-components - Публикуем настройки:
php artisan vendor:publish --tag="laravel-basic-components-config" - Публикуем миграции:
php artisan vendor:publish --tag="laravel-basic-components-migrations" - Если в проекте не используется
browser(компонент, который используется в админке), удаляем миграциюcreate_duotek_browser_filters_presets. - Выполняем команду:
php artisan migrate
Важно
- При установке пакета устанавливается
middlewareдля группыapiMrzlanx532\LaravelBasicComponents\Middleware\ReplaceNullValuesInFormData - Приложение должно работать в
UTC (00:00), соответственно, в конфигеconfig.appдолжно быть:
timezone => 'UTC' - Все даты для
datetimeиtimestampпри сохранении должны приводится кUTC (00:00)
Компоненты и как их использовать
Трейт UploadImages (Mrzlanx532\LaravelBasicComponents\Traits\Model\UploadImages\UploadImages)
Зачем нужен?
1) Сохранение\Обновление изображений из параметров Request с учетом конфигурации в модели
( в модели определяется нарезать ли картинки и как нарезать )
2) При обновлении также удаляются предыдущие файлы с сервера
Как использовать?
-
Трейт вставляется в модель, которая имеет изображения в свойствах.
Для правильной конфигурации необходимо в свойство модели$filePropertiesWithSettingsпоместить конфиг по примеру ниже: -
Для корректного вывода в ресурсах делаем так:
-
Если нужно чтобы файлы отдавались с абсолютным путем через метод
getFileLinksBySettingsможно:- Глобально добавить
UPLOAD_FILE_DOMAIN=http://api.example.ruв.envфайл в корне проекта - Локально добавить
->getFileLinksBySettings('photo', 'http://api.example.ru')
- Глобально добавить
- Если нужно в обособленном ресурсе, не привязываясь к классу, вывести изображения по конфигу модели:
Трейт UploadFile (Mrzlanx532\LaravelBasicComponents\Traits\Model\UploadFile\UploadFile)
Зачем нужен?
Трейт применяется к смежным таблицам. (например: таблица user_files, где есть колонка user_id и file_id)
Позволяет удобно сохранять, обновлять, удалять файлы взаимодействуя с таблицей files.
Также позволяет удобно настраивать конфигурацию сохранения (см. ниже)
При обновление модели удаляет предыдущий файл и заменяет новым.
При удаление модели удаляет файл (если нету трейта SoftDeletes).
При удалении через forceDelete файл тоже физически удаляется.
Как использовать?
-
Создаем модель для промежуточной таблицы файлов (например:
user_files) -
Применяем в сервисе.
- Итог
У нас сохранились файлы в
storage/app/private/files/<год>/<месяц>/<день>/<хэш_от_файла>.<расширение_файла>.
Добавились в таблицуfilesи создалась связь в таблицеuser_files
Класс Service (Mrzlanx532\LaravelBasicComponents\Service)
Зачем нужен?
Сервис является обязательным для использования при POST-действиях.
Например: Создание клиента, Изменение статуса заказа, Обновления данных клиента, Удаления клиента
Как использовать?
-
Создаем сервис
- Применяем в контроллере
Важные нюансы
paramsв методеgetRulesдоступны в чистом виде (всё что приходит сRequestилиarray)paramsв методеhandleочищены от полей, которые отсутствуют вgetRulesКласс
Definition(Mrzlanx532\LaravelBasicComponents\Definition\Definition)Зачем нужен?
Используется для хранения констант в определенном формате.
Имеет множество методов для удобной работы с ними.Как использовать?
Как локализовать title?
Как заполнить локализацию?
Как вызвать все константы с учётом локализации?
Как вызвать одну константу с учётом локализации?
Класс PanelForm (Mrzlanx532\LaravelBasicComponents\PanelForm\PanelForm)
Зачем нужен?
Используется в качестве соглашения с библиотекой на фронтенде для данных, которые должны быть получены для формы.
Используется исключительно в админках.
Как использовать?
- Создаем
PanelForm
- Применяем в контроллере
Класс QueryBuilder (Mrzlanx532\LaravelBasicComponents\QueryBuilder)
Зачем нужен?
Нужен для построения сложных запросов с участнием Illuminate\Http\Request и соответственно инкапсуляции логики
Как использовать?
-
Создаем
QueryBuilder - Используем в контроллере
Важные нюансы
paramsв методеgetRulesдоступны в чистом виде (всё что приходит сRequestилиarray)paramsв методеhandleочищены от полей, которые отсутствуют вgetRules
Класс PanelSet (Mrzlanx532\LaravelBasicComponents\PanelSet\PanelSet)
Зачем нужен?
Используется в качестве соглашения с библиотекой на фронтенде для определения интерфейса на фронтенде через бэкенд.
Используется исключительно в админках.
Как использовать?
- Создаем
PanelSet
- Используем в контроллере
Дополнительно:
Пример из POSTMAN как управляться с фильтрами:
Класс PanelSetSortable (Mrzlanx532\LaravelBasicComponents\PanelSetSortable\PanelSetSortable)
Зачем нужен?
Используется в качестве соглашения с библиотекой на фронтенде для определения интерфейса на фронтенде через бэкенд.
Нужен для компонента на фронте, который имеет Drag'n'Drop
Компонент определяет порядок записей
и может вкладывать одну запись в другую (опционально)Как использовать?
- Создаем
PanelSetSortable
-
Используем в контроллере
- Добавляем метод обновления сортировки\вложенности в контроллер
Класс BrowserFilterPresetController (Mrzlanx532\LaravelBasicComponents\Controllers\BrowserFilterPresetController)
Зачем нужен?
Используется в качестве соглашения между фронтендом и бэкэндом.
Содержит в себе контроллер с методами для сохранения\изменения\удаления пользовательских пресетов.
Как использовать?
Вставляем машруты в файл с роутами (там где необходимо).
Используется исключительно в админках, вместе с компонентом
PanelSet
All versions of laravel-basic-components with dependencies
laravel/framework Version ^8.3|^9.11|^11.0|^12.0
intervention/image Version ^2.5