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\Accepted
Anteris\FormRequest\Attributes\AcceptedIf
Anteris\FormRequest\Attributes\ActiveUrl
Anteris\FormRequest\Attributes\After
Anteris\FormRequest\Attributes\AfterOrEqual
Anteris\FormRequest\Attributes\Alpha
Anteris\FormRequest\Attributes\AlphaNumeric
Anteris\FormRequest\Attributes\AlphaNumericDash
Anteris\FormRequest\Attributes\Bail
Anteris\FormRequest\Attributes\Before
Anteris\FormRequest\Attributes\BeforeOrEqual
Anteris\FormRequest\Attributes\Between
Anteris\FormRequest\Attributes\Boolean
Anteris\FormRequest\Attributes\Confirmed
Anteris\FormRequest\Attributes\CurrentPassword
Anteris\FormRequest\Attributes\Date
Anteris\FormRequest\Attributes\DateEquals
Anteris\FormRequest\Attributes\DateFormat
Anteris\FormRequest\Attributes\Different
Anteris\FormRequest\Attributes\Digits
Anteris\FormRequest\Attributes\DigitsBetween
Anteris\FormRequest\Attributes\Dimensions
Anteris\FormRequest\Attributes\Email
Anteris\FormRequest\Attributes\EndsWith
Anteris\FormRequest\Attributes\ExcludeIf
Anteris\FormRequest\Attributes\ExcludeUnless
Anteris\FormRequest\Attributes\Exists
Anteris\FormRequest\Attributes\File
Anteris\FormRequest\Attributes\Filled
Anteris\FormRequest\Attributes\GreaterThan
Anteris\FormRequest\Attributes\GreaterThanOrEqualTo
Anteris\FormRequest\Attributes\Image
Anteris\FormRequest\Attributes\In
Anteris\FormRequest\Attributes\Integer
Anteris\FormRequest\Attributes\IP
Anteris\FormRequest\Attributes\IPv4
Anteris\FormRequest\Attributes\IPv6
Anteris\FormRequest\Attributes\Json
Anteris\FormRequest\Attributes\LessThan
Anteris\FormRequest\Attributes\LessThanOrEqualTo
Anteris\FormRequest\Attributes\Max
Anteris\FormRequest\Attributes\Mimes
Anteris\FormRequest\Attributes\MimeTypes
Anteris\FormRequest\Attributes\Min
Anteris\FormRequest\Attributes\MultipleOf
Anteris\FormRequest\Attributes\NotIn
Anteris\FormRequest\Attributes\NotRegex
Anteris\FormRequest\Attributes\Nullable
Anteris\FormRequest\Attributes\Numeric
Anteris\FormRequest\Attributes\Password
Anteris\FormRequest\Attributes\PasswordDefaults
Anteris\FormRequest\Attributes\Present
Anteris\FormRequest\Attributes\Prohibited
Anteris\FormRequest\Attributes\ProhibitedIf
Anteris\FormRequest\Attributes\ProhibitedUnless
Anteris\FormRequest\Attributes\Regex
Anteris\FormRequest\Attributes\Required
Anteris\FormRequest\Attributes\RequiredIf
Anteris\FormRequest\Attributes\RequiredUnless
Anteris\FormRequest\Attributes\RequiredWith
Anteris\FormRequest\Attributes\RequiredWithAll
Anteris\FormRequest\Attributes\RequiredWithout
Anteris\FormRequest\Attributes\RequiredWithoutAll
Anteris\FormRequest\Attributes\Same
Anteris\FormRequest\Attributes\Size
Anteris\FormRequest\Attributes\StartsWith
Anteris\FormRequest\Attributes\Timezone
Anteris\FormRequest\Attributes\Url
Anteris\FormRequest\Attributes\Uuid
要创建自己的验证属性,只需扩展 Anteris\FormRequest\Attributes\Rule
并为 getRules()
方法提供正确的输出。
电子邮件验证
由于电子邮件验证器有多个选项,电子邮件验证属性接受多个标志。这些是
Email::RfcValidation
Email::NoRfcWarningsValidation
Email::DnsCheckValidation
Email::SpoofCheckValidation
Email::FilterEmailValidation
默认情况下,模式设置为 Email::RfcValidation
。
以下是一个使用示例
class ContactInformation extends FormRequestData { #[Email] public string $email; #[Email(Email::DnsCheckValidation | Email::SpoofCheckValidation)] public string $email_2; }