为 Fluent 验证规则添加了新的静态构造函数
发布时间:作者: Paul Redmond
在 Laravel 9.41 中,我们现在为枚举规则、文件和图像文件添加了一些方便的静态构造函数。
您可以直接构造这些规则对象,但我喜欢知道可以通过主 Rule
对象上的静态构造函数访问它们的便利性。
use Illuminate\Validation\Rule;use Illuminate\Validation\Rules\Enum;use Illuminate\Validation\Rules\File;use Illuminate\Validation\Rules\ImageFile; // Before(new File())->default();(new ImageFile())->dimensions( Rule::dimensions()->maxWidth(1000)->maxHeight(500));new Enum(PostStatus::class); // As of 9.41Rule::file()->default()Rule::imageFile()->dimensions( Rule::dimensions()->maxWidth(1000)->maxHeight(500));Rule::enum(PostStatus::class);
以下是一个更完整的示例,展示如何使用主 Rule
类静态方法进行验证规则。
use App\Models\Post;use Illuminate\Validation\Rule;use Illuminate\Validation\Rules\Enum;use Illuminate\Validation\Rules\Unique; // Before$request->validate([ 'status' => [ 'required', new Enum(PostStatus::class) ], 'slug' => [ 'required', new Unique(Post::class); ],]); // After$request->validate([ 'status' => [ 'required', // Newly added in 9.41 Rule::enum(PostStatus::class) ], 'slug' => [ 'required', // Note: unique has been available for a while Rule::unique(Post::class), ],]);
某些规则对象在文档中没有示例,我发现这些规则对象可以通过主 Rule
类方法更容易发现。如果您查看 Illuminate\Validation\Rules
命名空间下的规则类,在撰写本文时,它们看起来像这样:
- DatabaseRule
- Dimensions
- Enum
- ExcludeIf
- Exists
- File
- ImageFile
- In
- NotIn
- Password
- ProhibitedIf
- RequiredIf
- Unique
我鼓励您深入研究源代码,以了解更多关于这些有用对象及其工作原理的信息。 验证文档 中提供了如何使用这些规则构建器的一些有用示例,例如 File
和 Exists
。