pi-space/laravel-typed-request is a Laravel package for this is my package laravel-typed-request.
It currently has 7 GitHub stars and 3 downloads on Packagist (latest version v0.1.1).
Install it with composer require pi-space/laravel-typed-request.
Discover more Laravel packages by pi-space
or browse all Laravel packages to compare alternatives.
Last updated
Laravel Typed Request is a package that enhances Laravel Form Request by introducing Typed Classes and Attribute-based Validation Rules.
This package provides a seamless way to create type-safe request classes, resulting in improved code readability and enhanced IDE support.
You can install the package via composer:
composer require pi-space/laravel-typed-request
Laravel Typed Request simplifies the process of creating Typed Form Request classes. Let's take an example of creating an ArticleRequest class:
php artisan make:typed-request ArticleRequest
app/Http/Requests/ArticleRequest.php file and update it as follows:namespace PiSpace\LaravelTypedRequest\Tests\Requests;
use PiSpace\LaravelTypedRequest\Rules\Date;
use PiSpace\LaravelTypedRequest\Rules\MaxLength;
use PiSpace\LaravelTypedRequest\Rules\Nullable;
use PiSpace\LaravelTypedRequest\Rules\Required;
use PiSpace\LaravelTypedRequest\Rules\RequiredIfPatch;
use PiSpace\LaravelTypedRequest\Rules\StringValue;
use PiSpace\LaravelTypedRequest\TypedFormRequest;
class ArticleRequest extends TypedFormRequest
{
#[Required, StringValue, MaxLength(255)]
public readonly string $title;
#[Required, StringValue, MaxLength(255)]
public readonly string $body;
#[Nullable, Date, RequiredIfPatch]
public readonly ?string $published_at;
}
PiSpace\LaravelTypedRequest\TypedFormRequest class.readonly.PiSpace\LaravelTypedRequest\Rules namespace. These rules are attribute-based and are similar to Laravel validation rules.PiSpace\LaravelTypedRequest\Rules\RuleAttribute class.RequiredIfPatch rule checks if the request method is PATCH, making the attribute required only in that case.Let's create a custom rule called RequiredIfPatch:
php artisan make:rule-attribute RequiredIfPatch
app/Rules/RequiredIfPatch.php file and update it as follows:#[Attribute]
class RequiredIfPatch extends RuleAttribute
{
public function rule(): \Illuminate\Validation\Rules\RequiredIf
{
return Rule::requiredIf(fn() => $this->request->isMethod('PATCH'));
}
}
Now you can use the RequiredIfPatch rule in your typed request classes.
For a detailed list of changes, see the CHANGELOG.
We welcome contributions! Please see CONTRIBUTING for details on how to get involved.
If you discover any security vulnerabilities, please review our security policy on how to report them.
The MIT License (MIT). See License File for more information.