anteris-dev / form-request
A lightweight form request DTO for Laravel.
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 1
Forks: 1
Open Issues: 3
pkg:composer/anteris-dev/form-request
Requires
- php: ^8.0
- illuminate/contracts: ^8.42
- illuminate/http: ^8.0
- illuminate/support: ^8.0
- illuminate/validation: ^8.42.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.9
This package is auto-updated.
Last update: 2025-10-18 02:23:58 UTC
README
Inspired by a Twitter thread, this is a stab at making Form Request data transfer objects. This package is currently WIP.
Creating a Form Request
To create your request with validation rules, simply extend AnterisDev\FormRequest\FormRequestData and add your public properties. To specify the validation rules for a property, pass a string of Laravel validation rules to the AnterisDev\FormRequest\Attributes\Validation attribute.
Note: This package intelligently adds rules like "required" when a property is not nullable and handles adding rules for default PHP types such as "string" for properties that are type hinted as a
string.
For example:
use AnterisDev\FormRequest\Attributes\Validation; use AnterisDev\FormRequest\FormRequestData; class CreatePersonRequest extends FormRequestData { #[Validation('required', 'string', 'max:255')] public string $first_name; #[Validation('required|string|max:255')] public string $last_name; // This property is still required because it is not nullable. // This property will also be validated as a string since it has that type. #[Validation('max:255')] public string $email; }
Then specify this request in your controller method:
public function store(CreatePersonRequest $request) { die('Hello ' . $request->first_name . ' ' . $request->last_name); }
[WIP] Validation Attributes
To assist with building your validation rules, various attributes are available. These attributes have typed parameters so that it is easy to see their available options.
The following attributes currently exist:
Anteris\FormRequest\Attributes\AcceptedAnteris\FormRequest\Attributes\AcceptedIfAnteris\FormRequest\Attributes\ActiveUrlAnteris\FormRequest\Attributes\AfterAnteris\FormRequest\Attributes\AfterOrEqualAnteris\FormRequest\Attributes\AlphaAnteris\FormRequest\Attributes\AlphaNumericAnteris\FormRequest\Attributes\AlphaNumericDashAnteris\FormRequest\Attributes\BailAnteris\FormRequest\Attributes\BeforeAnteris\FormRequest\Attributes\BeforeOrEqualAnteris\FormRequest\Attributes\BetweenAnteris\FormRequest\Attributes\BooleanAnteris\FormRequest\Attributes\ConfirmedAnteris\FormRequest\Attributes\CurrentPasswordAnteris\FormRequest\Attributes\DateAnteris\FormRequest\Attributes\DateEqualsAnteris\FormRequest\Attributes\DateFormatAnteris\FormRequest\Attributes\DifferentAnteris\FormRequest\Attributes\DigitsAnteris\FormRequest\Attributes\DigitsBetweenAnteris\FormRequest\Attributes\DimensionsAnteris\FormRequest\Attributes\EmailAnteris\FormRequest\Attributes\EndsWithAnteris\FormRequest\Attributes\ExcludeIfAnteris\FormRequest\Attributes\ExcludeUnlessAnteris\FormRequest\Attributes\ExistsAnteris\FormRequest\Attributes\FileAnteris\FormRequest\Attributes\FilledAnteris\FormRequest\Attributes\GreaterThanAnteris\FormRequest\Attributes\GreaterThanOrEqualToAnteris\FormRequest\Attributes\ImageAnteris\FormRequest\Attributes\InAnteris\FormRequest\Attributes\IntegerAnteris\FormRequest\Attributes\IPAnteris\FormRequest\Attributes\IPv4Anteris\FormRequest\Attributes\IPv6Anteris\FormRequest\Attributes\JsonAnteris\FormRequest\Attributes\LessThanAnteris\FormRequest\Attributes\LessThanOrEqualToAnteris\FormRequest\Attributes\MaxAnteris\FormRequest\Attributes\MimesAnteris\FormRequest\Attributes\MimeTypesAnteris\FormRequest\Attributes\MinAnteris\FormRequest\Attributes\MultipleOfAnteris\FormRequest\Attributes\NotInAnteris\FormRequest\Attributes\NotRegexAnteris\FormRequest\Attributes\NullableAnteris\FormRequest\Attributes\NumericAnteris\FormRequest\Attributes\PasswordAnteris\FormRequest\Attributes\PasswordDefaultsAnteris\FormRequest\Attributes\PresentAnteris\FormRequest\Attributes\ProhibitedAnteris\FormRequest\Attributes\ProhibitedIfAnteris\FormRequest\Attributes\ProhibitedUnlessAnteris\FormRequest\Attributes\RegexAnteris\FormRequest\Attributes\RequiredAnteris\FormRequest\Attributes\RequiredIfAnteris\FormRequest\Attributes\RequiredUnlessAnteris\FormRequest\Attributes\RequiredWithAnteris\FormRequest\Attributes\RequiredWithAllAnteris\FormRequest\Attributes\RequiredWithoutAnteris\FormRequest\Attributes\RequiredWithoutAllAnteris\FormRequest\Attributes\SameAnteris\FormRequest\Attributes\SizeAnteris\FormRequest\Attributes\StartsWithAnteris\FormRequest\Attributes\TimezoneAnteris\FormRequest\Attributes\UrlAnteris\FormRequest\Attributes\Uuid
To create your own validation attribute, simply extend Anteris\FormRequest\Attributes\Rule and provide the correct output to the getRules() method.
Email Validation
Due to several options available to the Email validator, the Email validation attribute accepts several flags. These are:
Email::RfcValidationEmail::NoRfcWarningsValidationEmail::DnsCheckValidationEmail::SpoofCheckValidationEmail:FilterEmailValidation
By default, the mode is set to Email::RfcValidation.
See an example of this usage below:
class ContactInformation extends FormRequestData { #[Email] public string $email; #[Email(Email::DnsCheckValidation | Email::SpoofCheckValidation)] public string $email_2; }