bcastellano / symfony-validator-conditional
Symfony条件验证器,基于对象属性进行条件验证
v1.0.1
2016-11-05 01:52 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- henrikbjorn/phpspec-code-coverage: 1.0.*@dev
- phpspec/phpspec: ~2.0
- satooshi/php-coveralls: ~1.0
- symfony/validator: ~2.0
This package is not auto-updated.
Last update: 2024-09-28 19:15:12 UTC
README
Symfony条件验证器
Symfony条件验证器,基于对象属性进行条件验证
安装
推荐通过composer进行安装
$ composer require bcastellano/symfony-validator-conditional
或在composer.json的require部分添加
使用方法
您可以使用PHP、注释、YAML或XML。
PHP配置示例
// src/AppBundle/Entity/User.php namespace AppBundle\Entity; use Bcastellano\Symfony\Validator\Constraints\Conditional; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Mapping\ClassMetadata; class User { public static function loadValidatorMetadata(ClassMetadata $metadata) { // property validator usage $metadata->addPropertyConstraint('name', new Conditional(array( 'constraints' => array( new Assert\NotBlank(), ), 'condition' => function($value){ // add login here... $value is object of this property and can be use to check context return $boolean; } ))); // class validator usage $metadata->addConstraint(new Conditional(array( 'constraints' => array( new Assert\Callback('validate'), ), 'condition' => function($value){ // add login here... $value is object validating and can be use to check context return $boolean; } ))); } }
注释配置示例
// src/AppBundle/Entity/User.php namespace AppBundle\Entity; use Bcasellano\Symfony\Validator\Constraints\Conditional; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Mapping\ClassMetadata; /** * Class validator * * @Conditional( * constraints = { * @Assert\Callback({"AppBundle\Entity\User","validate"}) * }, * condition = "AppBundle\Entity\User::shouldValidateName" * ) */ class User { /** * Property validator * * @Conditional( * constraints = { * @Assert\NotBlank() * }, * condition = "AppBundle\Entity\User::shouldValidateName" * ) */ protected $name; public static function shouldValidateName($object) { // add login here... $value is object validating and can be use to check context return $boolean; } public static function validate($object, ExecutionContextInterface $context, $payload) { // ... } }