fhteam/laravel-validator

v2.4.0 2022-09-13 08:48 UTC

This package is not auto-updated.

Last update: 2024-09-24 17:58:13 UTC


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);
    }