bakome / laravel-validation-attributes
Requires
- php: ^8.0
- laravel/framework: ^8.12
Requires (Dev)
- mockery/mockery: ^1.4.2
- phpunit/phpunit: ^9.3
- psalm/plugin-laravel: ^1.4
- vimeo/psalm: ^4.1
README
此包提供注解,可轻松在控制器中的操作方法上添加验证规则。以下是一个快速示例
use Bakome\ValidationAttributes\Attributes\ValidationRule; class ExampleController { #[ValidationRule('title', 'required|string')] public function actionMethod() { } }
动机
该项目旨在提供一个简单且更干净的方式来验证Laravel控制器中的请求数据。在操作方法中使用验证规则通常会复杂化控制器的可读性,而在单独的请求类中添加验证则意味着需要多次切换到这些类来查看和更改规则(失去焦点)。通过这些简单的属性,我们可以在不弄乱控制器代码的情况下,使验证在控制器中更易于访问和维护。
安装
您可以通过composer安装此包
composer require bakome/laravel-validation-attributes
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Bakome\ValidationAttributes\ValidationAttributesServiceProvider" --tag="config"
使用方法
此包提供了一些注解,应放置在控制器操作方法上。这些注解用于验证请求数据。
使用字符串作为参数添加验证规则
use Bakome\ValidationAttributes\Attributes\ValidationRule; class ExampleController { #[ValidationRule('title', 'required|string')] public function actionMethod() { } }
此属性将检查title参数是否在当前请求中存在,如果不存在则抛出验证错误。
使用数组作为参数添加验证规则
use Bakome\ValidationAttributes\Attributes\ValidationRule; class ExampleController { #[ValidationRule('title', ['required', 'string'])] public function actionMethod() { } }
此属性将检查title参数是否在当前请求中存在,如果不存在则抛出验证错误。
添加多个验证规则
use Bakome\ValidationAttributes\Attributes\ValidationRule; class ExampleController { #[ValidationRule('description', 'required|string')] #[ValidationRule('title', ['required', 'string'])] public function actionMethod() { } }
此属性将检查title和description参数是否在当前请求中存在,如果不存在则抛出验证错误。
为失败的验证添加重定向
use Bakome\ValidationAttributes\Attributes\ValidationRule; use Bakome\ValidationAttributes\Attributes\ValidationRuleRedirect; class ExampleController { #[ValidationRule('description', 'required|string')] #[ValidationRule('title', ['required', 'string'])] #[ValidationRuleRedirect('/a-redirection-route')] public function actionMethod() { } }
此属性将检查title和description参数是否在当前请求中存在,编译验证错误消息并将页面重定向到提供的路由。
为失败的验证添加带输入的重定向
use Bakome\ValidationAttributes\Attributes\ValidationRule; use Bakome\ValidationAttributes\Attributes\ValidationRuleRedirect; class ExampleController { #[ValidationRule('description', 'required|string')] #[ValidationRule('title', ['required', 'string'])] #[ValidationRuleRedirect('/a-redirection-route', true)] public function actionMethod() { } }
此属性将检查title和description参数是否在当前请求中存在,编译验证错误消息并将页面重定向到提供的路由,包括旧输入参数。
对Ajax请求的感知和失败的验证返回正确的JSON响应
配置
插件启用/禁用
'enabled' => true,
此插件可以通过更改配置文件中的此属性来启用或禁用。默认值是true(启用)。
插件启用/禁用
'middleware' => \Bakome\ValidationAttributes\Routing\Middleware\ValidationRulesByAttributes::class,
此属性允许开发者为验证提供不同的中间件处理器。请谨慎使用此选项,除非您需要自定义行为,否则请不要更改它。
验证中间件
'middleware' => \Bakome\ValidationAttributes\Routing\Middleware\ValidationRulesByAttributes::class,
此属性允许开发者为验证提供不同的中间件处理器。请谨慎使用此选项,除非您需要自定义行为,否则请不要更改它。
检测API路由
'api_pattern' => 'api/*',
此属性提供检测API路由的值。有时仅使用expects json不足以检测,当这种情况缺失此选项/功能时,它可以完成任务。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。
路线图
- 提供自定义验证消息
- 提供验证组以减少样板代码