Php trait上的Symfony2回调验证
我想对特征使用回调验证。例如:Php trait上的Symfony2回调验证,php,validation,symfony,traits,Php,Validation,Symfony,Traits,我想对特征使用回调验证。例如: 我有同样的问题。通过谷歌找到这个。。。所以:我重现了这个问题。这里也一样 额外信息:如果您在trait中的属性上放置@Assert注释,它将起作用。只有回调不起作用。如果注释在trait上(而不是在方法上,这在Symfony2.4+中是可能的),回调验证器不能与trait中的注释一起使用 如果您的Symfony2版本早于2.4,则必须使用此方法: namespace Vendor\Bundle\Entity; use Doctrine\ORM\Mapping a
我有同样的问题。通过谷歌找到这个。。。所以:我重现了这个问题。这里也一样
额外信息:如果您在trait中的属性上放置@Assert注释,它将起作用。只有回调不起作用。如果注释在trait上(而不是在方法上,这在Symfony2.4+
中是可能的),回调验证器不能与trait中的注释一起使用
如果您的Symfony2版本早于2.4
,则必须使用此方法:
namespace Vendor\Bundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Validator\Mapping\ClassMetadata;
trait ReviewableEntity
{
//...
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addConstraint(
new Assert\Callback(
'validateReview',
array(
'groups' => array('review'),
)
)
);
}
/**
* @param ExecutionContext $context
*/
public function validateReview(ExecutionContext $context)
{
//...
$context->addViolationAt('review', 'Review must be valid', [], null);
//...
}
//...
}
这只是处理验证器的普通php方法,而不使用XML或YML中的注释或配置文件
我在谷歌查询“github-symfony-entity-trait-assert-callback
”中找到了这个答案,当时我正在处理相同的问题。对我来说,第一个结果是。那么,Symfony 2.4+的正确(最简单)方法是什么?