Автоматизируем создание FormRequest в Laravel с помощью пакета desole-laravel-generate-request

в 12:15, , рубрики: composer, laravel, php, request, автоматизация рутины

Привет! Сегодня я хочу рассказать о новом пакете для 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.


Как это работает?

1. Правила из базы данных

Пакет автоматически определяет правила валидации на основе типов данных в базе данных. Например:

  • varchar(255) → string|max:255

  • int → integer

  • date → date

  • json → array

2. Кастомные правила

Вы можете указать кастомные правила валидации прямо в модели. Для этого добавьте методы 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', // Поле, которого нет в базе данных
    ];
}

}

3. Режим --only-custom

Если вы хотите, чтобы в FormRequest класс попали только кастомные правила, используйте флаг --only-custom:
php artisan request:make User UserStoreRequest store --only-custom


Пример сгенерированного FormRequest

Пример сгенерированного FormRequest

Для команды:
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'],
];
}
}


Преимущества пакета

  1. Экономия времени: Автоматическая генерация FormRequest классов избавляет от рутинной работы.

  2. Гибкость: Поддержка кастомных правил и различных типов запросов (store, update, delete).

  3. Интеграция с базой данных: Автоматическое определение правил валидации на основе типов данных..


Заключение

Пакет desole/laravel-generate-request — это мощный инструмент для автоматизации создания FormRequest классов в Laravel. Он не только экономит время, но и помогает поддерживать код в чистоте и порядке. Если вы часто работаете с FormRequest, этот пакет может стать вашим новым лучшим другом.

Попробуйте его в своем проекте и поделитесь своими впечатлениями в комментариях! Если у вас есть идеи для улучшения, создайте issue на GitHub.

Спасибо за внимание, и удачного кодинга! 🚀


Ссылки


P.S. Если вам понравился этот пакет, не забудьте поставить звезду на GitHub! Это поможет другим разработчикам узнать о нем. 😊

Автор: MyDesole

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js