edvinaskrucas / validator-service
Laravel4 的验证服务
Requires
- php: >=5.3.0
- illuminate/events: 4.0.x
- illuminate/support: 4.0.x
- illuminate/validation: 4.0.x
Requires (Dev)
- mockery/mockery: 0.7.*
This package is auto-updated.
Last update: 2024-09-11 13:40:39 UTC
README
简单,但功能强大的验证服务,用于验证您的数据。
安装
由于它使用 composer 打包系统,您只需将此 "edvinaskrucas/validator-service": "dev-master""
添加到您的 composer.json 文件中,并更新您的项目。
Laravel 服务提供者
当与 laravel4 一起使用时,您可能希望将以下行添加到您的配置文件中
ServiceProvider 数组
'Krucas\Service\Validator\ValidatorServiceProvider'
和 Alias 数组
'ValidatorService' => 'Krucas\Service\Validator\Facades\ValidatorService'
现在您可以使用外观的强大功能。
事件
验证服务使用事件让其他组件知道验证器正在执行一些检查。
在验证器实例创建后立即触发的事件
- service.validator.creating
- service.validator.creating: Vendor\Package\Class
在验证器实例创建后的触发事件
- service.validator.created
- service.validator.created: Vendor\Package\Class
在开始实际验证之前触发的触发事件
- service.validator.validating
- service.validator.validating: Vendor\Package\Class
验证后的触发事件
- service.validator.validated
- service.validator.validated: Vendor\Package\Class
让我们快速概述一下。
service.validator.creating
在规则和属性分配之前触发。如果某些监听器返回 false
,则验证将自动返回 false
而不进行验证。
service.validator.creating: Vendor\Package\Class
与上面相同,只是有一个特定的类名。
service.validator.created
在创建新实例后立即触发,并分配规则和属性。如果某些监听器返回 false
,则验证将自动返回 false
而不进行验证。
service.validator.created: Vendor\Package\Class
与上面相同,只是有一个特定的类名。
service.validator.validating
此事件首先触发,如果某些监听器返回 false
,则将取消验证并返回 false
service.validator.validating: Vendor\Package\Class
事件几乎与上一个相同,但这个事件允许您监听要验证的特定类。其中 Vendor\Package\Class
将放置验证的类名。如果某些监听器返回 false
,则将取消验证方法。
service.validator.validated
在验证返回 true
时触发的事件,此事件不会停止任何其他操作。
service.validator.validated Vendor\Package\Class
与上面几乎相同,但有一个类名。
所有事件都将传递一个 Krucas\Service\Validator\Validator
对象实例以进行操作。
使用方法
基本用法
您可以使用它来验证您的模型、表单和其他内容,您只需实现 ValidatableInterface
即可。
Eloquent 示例模型
class Page extends Eloquent implements Krucas\Service\Validator\Contracts\ValidatableInterface { public function getValidationRules() { return array( 'title' => 'required|max:255', 'content' => 'required' ); } public function getValidationValues() { return $this->attributes; } }
现在您准备好验证它了。
$page = new Page(); $validatorService = ValidatorService::make($page); if($validatorService->passes()) { return 'OK'; } else { $errors = $validatorService->getErrors(); }
此示例显示了如何轻松设置您的验证。
使用事件监听器的高级用法
此示例将展示更高级的使用(我在我的情况下使用了它)。
我们有一个名为 Routing 的包,基本上它所做的只是将一些 URL 存储到数据库中,并从多态关系解析对象。
让我们定义我们的可路由模型的接口。
interface RoutableInterface { public function getUri(); }
现在我们需要处理所有可路由模型,在验证我们的数据时添加额外的检查,我们可以在监听某些事件时非常容易地做到这一点。
Event::listen('service.validator.validating', function(Validator $validatorService) { // Check if our validatable object implements RoutableInterface // If it is, then add some extra rules and values for a validator if(in_array('RoutableInterface', class_implements($validatorService->getValidatable()))) { $validatorService->setAttributeRules('uri', 'required|max:255|unique:uri,uri'); $validatorService->setAttributeValue('uri', Input::get('uri')); } });
就是这样,这将向每个可路由模型实例添加一些额外的规则和值,当它正在验证时。验证成功后,您可以向您的数据库中插入一些记录。