pi-space/laravel-typed-request

这是我创建的laravel-typed-request包

v0.1.1 2023-08-18 20:06 UTC

This package is auto-updated.

Last update: 2024-09-19 00:42:02 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Laravel Typed Request是一个通过引入类型类和属性验证规则增强Laravel表单请求的包。

此包提供了一种无缝创建类型安全请求类的方法,从而提高了代码的可读性并增强了IDE支持。

特性

  • 使用属性验证规则定义类型化的表单请求类
  • 提高了代码的可读性和可维护性。
  • 增强了IDE对自动完成和错误检查的支持。

安装

您可以通过composer安装此包

composer require pi-space/laravel-typed-request

用法

创建类型化表单请求类

Laravel Typed Request简化了创建类型化表单请求类的过程。以下是一个创建ArticleRequest类的示例

  1. 要创建类型化请求类,使用以下Artisan命令
php artisan make:typed-request ArticleRequest
  1. 打开生成的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的自定义规则

  1. 要创建自定义规则类,使用以下Artisan命令
php artisan make:rule-attribute RequiredIfPatch
  1. 打开生成的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)。有关更多信息,请参阅许可证文件