anteris-dev/form-request

为 Laravel 定制的轻量级表单请求 DTO。

dev-master 2021-08-17 17:11 UTC

This package is auto-updated.

Last update: 2024-09-17 23:55:38 UTC


README

Tests Style

受一个 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;
}