browner12 / validation
此包已被废弃,不再维护。没有建议的替代包。
用于Laravel项目的验证包
v2.1.0
2020-03-09 02:39 UTC
Requires
- php: ^7.2
- illuminate/console: ^6.0|^7.0
- illuminate/contracts: ^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^8.0
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is auto-updated.
Last update: 2024-03-14 18:28:04 UTC
README
这是一个为补充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)。有关更多信息,请参阅许可文件。