ibekiaris / zf2-annotation-validator
为 doctrine 实体添加验证注解
dev-master / 0.1.x-dev
2015-10-07 18:39 UTC
Requires
- php: >=5.4.0
- doctrine/doctrine-orm-module: 0.*
- webiny/annotations: 1.3.0
This package is not auto-updated.
Last update: 2024-09-28 17:49:22 UTC
README
注解验证器是一个 ZF2 模块,用于在实体生命周期回调(事件)中对 Doctrine 实体进行验证。
在您的项目中使用注解验证器可以提高生产力。同时,参与您项目的初级开发者不需要担心验证,因为验证发生在实体中。
您还可以确信,您的持久层对代码漏洞的防护更加严密。
目前数据验证是在 flush 之前进行的,这与使用 ORM 时的观点相反,即实体在其“构建”后必须有效。
然而,这个模块为我解决了许多实际问题,我认为这是分享代码时最重要的。
安装
- 使用 composer
composer require ibekiaris/zf2-annotation-validator
- 直接在您的 ZF2 项目中
只需将模块文件复制到“模块”目录
无论如何,在包含代码后,在 application.config.php 中添加以下行
'modules' => array(
'Application',
'AnnotationValidator'
),
最后,将 "module.config.sample.php" 中的行添加到您的全局或本地项目配置文件中。当然,您需要根据需要更改 'validation_classes_aliases'。
文档
在您的实体中使用 AnnotationValidator\DoctrineValidatorTrait。
use AnnotationValidator\DoctrineValidatorTrait
/**
* This is a simple Entity Class
*
*
* @ORM\Entity
* @ORM\Table(name="clients")
* @ORM\HasLifecycleCallbacks
*
* @author Ioannis Bekiaris <bekiarisgiannis85@gmail.com>
* @copyright 2015 - 2016 Ioannis Bekiaris
*/
class Client
{
use DoctrineValidatorTrait;
/**
* @ORM\Column(name="title", type="string")
*
* @VLD {"type":"RequiredString"}
* @var string
*/
private $name;
}
使用 @VLD 注解来验证 $name 属性。
例如:module.config.php
return [
'validation_classes_aliases' => [
'RequiredString' => [
'validation_class' => '\Zend\Validator\Regex',
'validation_options' => [
'pattern' => '/^[\p{L}0-9\s\.\-]+$/u',
],
],
'HostName' => [
'validation_class' => '\Zend\Validator\Hostname',
'validation_options' => [
'allow' => \Zend\Validator\Hostname::ALLOW_ALL,
],
],
'LonLat' => [
'validation_class' => '\Zend\Validator\Regex',
'validation_options' => [
'pattern' => '/^[A-Z0-9\s\.]{0,10}$/',
],
],
],
注意
在验证类型(别名)中使用 "NotRequired" 作为后缀或前缀以接受 null 作为值
例如:
/**
* @ORM\Column(name="facebook_account_url", type="string", nullable=true)
*
* @VLD {"type":"UriNotRequired"}
* @var string
*/
protected $facebookAccountUrl;
许可证
此存档中的文件在许可证下发布。您可以在 LICENSE.txt 中找到此许可证的副本。