pi-space / laravel-typed-request
这是我创建的laravel-typed-request包
v0.1.1
2023-08-18 20:06 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
README
Laravel Typed Request是一个通过引入类型类和属性验证规则增强Laravel表单请求的包。
此包提供了一种无缝创建类型安全请求类的方法,从而提高了代码的可读性并增强了IDE支持。
特性
- 使用属性验证规则定义类型化的表单请求类。
- 提高了代码的可读性和可维护性。
- 增强了IDE对自动完成和错误检查的支持。
安装
您可以通过composer安装此包
composer require pi-space/laravel-typed-request
用法
创建类型化表单请求类
Laravel Typed Request简化了创建类型化表单请求类的过程。以下是一个创建ArticleRequest
类的示例
- 要创建类型化请求类,使用以下Artisan命令
php artisan make:typed-request ArticleRequest
- 打开生成的
app/Http/Requests/ArticleRequest.php
文件,并按以下方式更新
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
类。 - 类型化请求类中的所有属性必须是
readonly
。
可用的规则
- 所有可用的规则都位于
PiSpace\LaravelTypedRequest\Rules
命名空间中。这些规则基于属性,类似于Laravel验证规则。 - 您可以通过扩展
PiSpace\LaravelTypedRequest\Rules\RuleAttribute
类来创建自定义规则。 - 例如,
RequiredIfPatch
规则检查请求方法是PATCH
,在这种情况下只要求属性为必填。 - 在自定义规则类内部,您可以访问请求实例,以便访问请求数据。
创建自定义规则
让我们创建一个名为RequiredIfPatch
的自定义规则
- 要创建自定义规则类,使用以下Artisan命令
php artisan make:rule-attribute RequiredIfPatch
- 打开生成的
app/Rules/RequiredIfPatch.php
文件,并按以下方式更新
#[Attribute] class RequiredIfPatch extends RuleAttribute { public function rule(): \Illuminate\Validation\Rules\RequiredIf { return Rule::requiredIf(fn() => $this->request->isMethod('PATCH')); } }
现在您可以在类型化请求类中使用RequiredIfPatch
规则。
变更日志
有关详细变更列表,请参阅变更日志。
贡献
我们欢迎贡献!有关如何参与的详细信息,请参阅贡献指南。
安全漏洞
如果您发现任何安全漏洞,请查阅我们的安全策略以了解如何报告。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。