Validation 自定义约束验证作为实体的服务
我正在尝试为我的一个实体设置自定义constrait验证,constrait验证需要检查datatable以检查和验证字段 我遵循了这个链接:但它没有说明如何使用YAML为我的实体设置constrait验证 将constrait验证设置为类,symfony向我抛出一个错误,指出需要向该类传递EntityManager的实例 这是我的验证器:Validation 自定义约束验证作为实体的服务,validation,symfony,Validation,Symfony,我正在尝试为我的一个实体设置自定义constrait验证,constrait验证需要检查datatable以检查和验证字段 我遵循了这个链接:但它没有说明如何使用YAML为我的实体设置constrait验证 将constrait验证设置为类,symfony向我抛出一个错误,指出需要向该类传递EntityManager的实例 这是我的验证器: namespace Acme\BundleibBundle\Validator\Constraints; use Doctrine\ORM\EntityM
namespace Acme\BundleibBundle\Validator\Constraints;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class IsNotDayOff extends ConstraintValidator
{
private $em;
public $message = 'Impossible the send this day.';
public function __construct(EntityManager $entityManager)
{
$this->em = $entityManager;
}
public function validate($value, Constraint $constraint)
{
$repository = $em->getRepository('AcmeRibBundle:DayOff');
$isDayOff = $repository->findOneByDate($value);
if ($isDayOff) {
$this->context->buildViolation($constraint->message)
->addViolation();
}
}
}
这里是我的服务配置:
validator.is_not_day_off:
class: Acme\Bundle\RibBundle\Validator\Constraints\IsNotDayOff
attributes:
- "@doctrine.orm.entity_manager"
tags:
- { name: validator.constraint_validator, alias: "validator.is_not_day_off" }
我也尝试这样做:
validation.yml
Acme\Bundle\RibBundle\Entity\Address:
properties:
deliveryDate:
- validator.is_not_day_off: ~
但是抛出和异常也是如此
请提供一些帮助?您似乎只有一个验证器,您正试图将其作为对您的财产的约束 您必须区分以下类别: 出现在validation.yml中的约束
class IsNotDayOff extends Constraint
{
public $message = 'your error message';
public function validatedBy()
{
//return your validator class
}
}
您必须在services.yml中将验证器声明为服务
class IsNotDayOffValidator extends ConstraintValidator
{
//your own logic...
}
只需将服务配置中的
属性
替换为参数
。是的,这是一个错误,但错误持续存在约束返回的validateBy()方法是什么?您使用的是哪个版本的Symfony?我没有validateBy()方法,它是必需的?我使用的是Symfony 2.8,您能提供错误或异常吗?您是对的!我昨天做的,效果很好。谢谢