Symfony中的约束
我有一个班叫Student,有开始日期和结束日期。我想添加一个Symfony中的约束,symfony,validation,doctrine-orm,constraints,assert,Symfony,Validation,Doctrine Orm,Constraints,Assert,我有一个班叫Student,有开始日期和结束日期。我想添加一个\@Assert(),用于验证StartDate始终在EndDate之前。这就是我所知道的,但是错误消息没有被执行。这可以通过另一种方式实现吗 /** * @var \DateTime * * @ORM\Column(name="startDate", type="datetime", nullable=false) * @Assert\Type("DateTime") */ private $startdate; /**
\@Assert()
,用于验证StartDate始终在EndDate之前。这就是我所知道的,但是错误消息没有被执行。这可以通过另一种方式实现吗
/**
* @var \DateTime
*
* @ORM\Column(name="startDate", type="datetime", nullable=false)
* @Assert\Type("DateTime")
*/
private $startdate;
/**
* @var \DateTime
*
* @ORM\Column(name="endDate", type="datetime", nullable=false)
* @Assert\Type("DateTime")
* @Assert\Expression("this.getStartDate() < this.getEndDate()",
* message="The end date must be after the start date")
*
*
*/
private $enddate;
/**
*@var\DateTime
*
*@ORM\Column(name=“startDate”,type=“datetime”,nullable=false)
*@Assert\Type(“日期时间”)
*/
私人$startdate;
/**
*@var\DateTime
*
*@ORM\Column(name=“endDate”,type=“datetime”,nullable=false)
*@Assert\Type(“日期时间”)
*@Assert\Expression(“this.getStartDate()
不知道是否可以在anotation中完成,但可以使用类验证器完成,在类验证器中可以访问实体的所有数据并进行比较
您可以使用一个简单的回调:
/**
* @var \DateTime
*
* @ORM\Column(name="startDate", type="datetime", nullable=false)
* @Assert\Type("DateTime")
*/
private $startdate;
/**
* @var \DateTime
*
* @ORM\Column(name="endDate", type="datetime", nullable=false)
* @Assert\Type("DateTime")
* message="The end date must be after the start date")
*
*
*/
private $enddate;
/**
* @Assert\Callback
*/
public function validateDate(ExecutionContextInterface $context, $payload)
{
if ($this->startdate > $this->enddate) {
$context->buildViolation('Start date has to be befor end date')
->atPath('startdate')
->addViolation();
}
}
有关详细信息,请参阅。是的,或者您可以创建一个自定义的验证约束来获取其他值