- PVSM.RU - https://www.pvsm.ru -
Привет! Сегодня я хочу рассказать о новом пакете для Laravel, который может значительно упростить вашу жизнь, если вы часто работаете с FormRequest классами. Пакет называется desole/laravel-generate-request, и он позволяет автоматически генерировать FormRequest классы на основе ваших моделей. Давайте разберем, как это работает и почему это может быть полезно.
FormRequest классы в Laravel — это отличный способ вынести логику валидации из контроллеров и сделать код более чистым и поддерживаемым. Однако, создание этих классов вручную может быть утомительным, особенно если у вас много моделей и полей.
Представьте, что у вас есть модель User с полями name, email, password и другими. Вам нужно создать FormRequest класс, где каждое поле будет иметь свои правила валидации. Это может занять много времени, особенно если у вас десятки моделей.
Вот здесь на помощь приходит пакет desole/laravel-generate-request. Он автоматически генерирует FormRequest классы на основе ваших моделей, используя правила валидации из базы данных или кастомные правила, указанные в модели.
Установить пакет можно через Composer:
composer require desole/laravel-generate-request
После установки пакет автоматически регистрирует Artisan команду, которую можно использовать для генерации FormRequest классов.
Основная команда для генерации FormRequest классов выглядит так:
php artisan request:make {Model} {Name} {Type} {--only-custom}
Model: Имя модели, на основе которой будет создан FormRequest класс.
Name: Имя создаваемого FormRequest класса.
Type: Тип FormRequest класса (store, update, delete).
--only-custom: Если указан, в FormRequest класс попадут только те поля, которые явно указаны в методе модели для выбранного типа.
php artisan request:make User UserStoreRequest store
Эта команда создаст класс UserStoreRequest с правилами валидации для полей модели User.
Пакет автоматически определяет правила валидации на основе типов данных в базе данных. Например:
varchar(255) → string|max:255
int → integer
date → date
json → array
Вы можете указать кастомные правила валидации прямо в модели. Для этого добавьте методы getStoreFields, getUpdateFields или getDeleteFields.
Пример модели:
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
public function getStoreFields()
{
return [
'email' => 'required|email|unique:users,email', // Кастомные правила
'name' => '', // Поле без правил (будут использованы правила из базы данных)
'custom_field' => 'string|max:100', // Поле, которого нет в базе данных
];
}
}
Если вы хотите, чтобы в FormRequest класс попали только кастомные правила, используйте флаг --only-custom:
php artisan request:make User UserStoreRequest store --only-custom
Для команды: php artisan request:make User UserStoreRequest store
Будет создан следующий класс:
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class UserStoreRequest extends FormRequest
{
public function rules()
{
return [
'email' => ['required', 'email', 'unique:users,email'],
'name' => ['required', 'string', 'max:255'],
'password' => ['required', 'string', 'min:8'],
'custom_field' => ['string', 'max:100'],
];
}
}
Экономия времени: Автоматическая генерация FormRequest классов избавляет от рутинной работы.
Гибкость: Поддержка кастомных правил и различных типов запросов (store, update, delete).
Интеграция с базой данных: Автоматическое определение правил валидации на основе типов данных..
Пакет desole/laravel-generate-request — это мощный инструмент для автоматизации создания FormRequest классов в Laravel. Он не только экономит время, но и помогает поддерживать код в чистоте и порядке. Если вы часто работаете с FormRequest, этот пакет может стать вашим новым лучшим другом.
Попробуйте его в своем проекте и поделитесь своими впечатлениями в комментариях! Если у вас есть идеи для улучшения, создайте issue на GitHub [1].
Спасибо за внимание, и удачного кодинга! 🚀
Packagist [3]
P.S. Если вам понравился этот пакет, не забудьте поставить звезду на GitHub! Это поможет другим разработчикам узнать о нем. 😊
Автор: MyDesole
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/414357
Ссылки в тексте:
[1] GitHub: https://github.com/desole/laravel-generate-request
[2] GitHub репозиторий: https://github.com/MyDesole/laravel-generate-request/
[3] Packagist: https://packagist.org/packages/desole/laravel-generate-request
[4] Источник: https://habr.com/ru/articles/893362/?utm_source=habrahabr&utm_medium=rss&utm_campaign=893362
Нажмите здесь для печати.