browner12/validation

此包已被废弃,不再维护。没有建议的替代包。

用于Laravel项目的验证包

v2.1.0 2020-03-09 02:39 UTC

This package is auto-updated.

Last update: 2024-03-14 18:28:04 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这是一个为补充Laravel内建的验证而构建的验证包。此包的主要优势之一是验证的重用规则存储在单独的文件中。

安装

$ composer require browner12/validation

设置

将服务提供者添加到config/app.php中的providers数组。

'providers' => [
    browner12\validation\ValidationServiceProvider::class,
];

使用

使用Artisan生成一个新的验证器。

php artisan make:validator UserValidator

验证器扩展了抽象的browner12\validation\Validator,其中包含执行验证所需的所有方法。您需要定义的是您的规则。例如,如果您有一个'Product'模型,您可以创建一个ProductValidator。虽然它们可以放在任何可以自动加载的地方,但一个好的建议是放在app/Validation

namespace App\Validation;

class ProductValidator extends Validator
{
    protected static $store = [
        'name'  => 'required',
        'price' => 'required|int',
    ];
    
    protected static $update = [
        'name'  => 'required',
        'price' => 'required|int',
    ];
}

如您所见,验证器可以包含多个规则集。要使用验证器,创建一个新的Validator对象,或使用依赖注入(DI在示例中使用)。传递要验证的数据和要使用的规则集名称。处理验证的好地方是在一个专用的类(有时称为服务)中,这样它就可以在整个网站上重用。

namespace App\Services;

use App\Validation\ProductValidator;
use browner12\validation\ValidationException;

class ProductService
{
    /**
     * constructor
     *
     * @param \App\Validation\ProductValidator $validator
     */
    public function __construct(ProductValidator $validator)
    {
        $this->validator = $validator;
    }

    /**
     * store product
     *
     * @param array $input
     * @throws \browner12\validation\ValidationException
     */
    public function store(array $input)
    {
        if ($this->validator->isValid($input, 'store')) {
    
            //data is good, save to storage
            return true;
        }
    
        throw new ValidationException('Storing a product failed.', $this->validator->getErrors());
    }
}

最后,您的控制器将调用该服务,并处理抛出的任何错误。

use App\Services\ProductService;
use browner12\validation\ValidationException;

class ProductController
{
    /**
     * constructor
     */
    public function __construct(ProductService $service)
    {
        $this->service = $service;
    }

    /**
     * store
     */
    public function store()
    {
        try {
        
            $data = [
                'name'  => $_POST['name'],
                'price' => $_POST['price'],
            ];
        
            $this->service->store($data);
        }
        
        catch (ValidationException $e){
        
            //handle the exception
        }
    }
}

变更日志

请参阅变更日志以获取更多信息。

测试

$ composer test

贡献

请参阅贡献指南行为准则以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过browner12@gmail.com发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件