jho*_*orn 4 validation entities symfony
我需要能够在Symfony2中对整个实体进行复杂的自定义验证.
例如:我entity有很多subentities,所有subentities必须达到100.
据我所知,Symfony2验证器只验证奇异字段?
答案是肯定的.您需要为对象而不是参数指定约束,并指定其类级别约束的约束.一个有点冗长的例子是:
config.yml
validator.my.uniquename:
class: FQCN\To\My\ConstraintValidator
arguments: [@service_container]
tags:
- { name: validator.constraint_validator, alias: ConstraintValidator }
Run Code Online (Sandbox Code Playgroud)
validation.yml
FQCN\To\My\Entity:
constraints:
- FQCN\To\MyConstraint: ~
Run Code Online (Sandbox Code Playgroud)
(本例中没有约束参数)
我的约束
namespace FQCN\To;
use
Symfony\Component\Validator\Constraint
;
/**
* @Annotation
*/
class MyConstraint extends Constraint
{
public $message = 'Constraint not valid';
public function validatedBy()
{
return 'ConstraintValidator';
}
public function getTargets()
{
# This is the important bit.
return self::CLASS_CONSTRAINT;
}
}
Run Code Online (Sandbox Code Playgroud)
我的ConstraintValidator
class MyConstraintValidator extends ConstraintValidator
{
protected $container;
function __construct($container)
{
$this -> container = $container;
}
function isValid($object, Constraint $constraint)
{
# validation here.
return true;
}
}
Run Code Online (Sandbox Code Playgroud)