fhteam / laravel-validator
一系列 Laravel 验证器
v2.4.0
2022-09-13 08:48 UTC
Requires
- php: ^8.1
Requires (Dev)
- giggsey/libphonenumber-for-php: ~7.0
- laravel/framework: ^9.0
- orchestra/testbench: ^7.0
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- giggsey/libphonenumber-for-php: Allows to validate phone numbers
README
特性
- 验证逻辑完全独立于被验证的对象
- 90% 的情况下,验证规则和验证失败的行为可以以声明式方式编写
- 使用 Laravel 验证器核心和规则
- 状态模型验证
- 提供面向对象的方式来编写和注册新的验证规则
- 作为 Input::get() 的替代,以防止未经验证的数据偷偷进入您的应用程序
- 在数据到达应用程序逻辑之前对验证数据进行基于规则的转换(进行中)
- 为控制器和模型提供编写规则的统一方式
- 可以验证和聚合许多类型的输入:$_GET/$_POST, $_FILES, HTTP 头部,会话数据,Cookies(PHP 原生和 Laravel 加密的)
- 两种类型的输入验证器:中间件(需要手动注册)和 validate-when-resolved(注入即可完成)
文档
- 文档可在此处找到
快速示例
class OrderControllerValidator extends FrontendControllerValidatorWhenResolved { protected $rules = [ '*' => [ 'user_id' => 'required|numeric', ], 'getCreate, getShow, getEdit' => [], 'postOpen, postDelete, postAssignContractor, postCancelContractorAssignment' => [], 'postCreate' => [ 'title' => 'required|max:100', 'categoryId' => 'required|numeric', 'description' => 'required|max:4096', ], 'postEdit, postFileDelete, postFileUpload' => [ 'title' => 'required|max:100', 'categoryId' => 'required|numeric', 'description' => 'required|max:4096', ], ]; protected $errorRedirects = [ 'getShow' => ['route' => 'home'], 'postCreate' => ['route' => 'orders_create'], 'postEdit, postFileUpload, postFileDelete' => ['route' => ['orders_edit', ['orderId' => '#orderId']]], ]; } class OrderController extends Controller { /** * @var OrderControllerValidator */ protected $validator; /** * IoC invoked constructor */ public function __construct(OrderControllerValidator $validator) { $this->validator = $validator; } public function getShowValidatedData() { return Response::make($this->validator->description); }