anteris-dev / form-request
为 Laravel 定制的轻量级表单请求 DTO。
dev-master
2021-08-17 17:11 UTC
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: 2024-09-17 23:55:38 UTC
README
受一个 Twitter 讨论帖的启发,这是一个制作表单请求数据传输对象的尝试。此包目前处于 WIP 状态。
创建表单请求
要使用验证规则创建请求,只需扩展 AnterisDev\FormRequest\FormRequestData 并添加您的公共属性。要指定属性的验证规则,将 Laravel 验证规则字符串传递给 AnterisDev\FormRequest\Attributes\Validation 属性。
注意:此包智能地添加规则,如 "required",当属性不可为空时,并处理为默认 PHP 类型添加规则,例如为类型为
string的属性添加 "string"。
例如
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; }
然后在您的控制器方法中指定此请求
public function store(CreatePersonRequest $request) { die('Hello ' . $request->first_name . ' ' . $request->last_name); }
[WIP] 验证属性
为了帮助构建验证规则,提供各种属性。这些属性具有类型参数,因此可以轻松查看它们的可用选项。
以下属性目前存在
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
要创建自己的验证属性,只需扩展 Anteris\FormRequest\Attributes\Rule 并为 getRules() 方法提供正确的输出。
电子邮件验证
由于电子邮件验证器有多个选项,电子邮件验证属性接受多个标志。这些是
Email::RfcValidationEmail::NoRfcWarningsValidationEmail::DnsCheckValidationEmail::SpoofCheckValidationEmail::FilterEmailValidation
默认情况下,模式设置为 Email::RfcValidation。
以下是一个使用示例
class ContactInformation extends FormRequestData { #[Email] public string $email; #[Email(Email::DnsCheckValidation | Email::SpoofCheckValidation)] public string $email_2; }