以编程方式触发实体验证
Trigger entity validation programmatically
问题很简单
我有一个带有验证约束的实体。
我也有一个服务可以创建这样的实体。
问题是,它不会像 @Assert\Expression
那样触发验证。见下文。
这是一个巨大的失败。请问如何以编程方式触发此类验证?
我需要根据 Booking
class 定义中定义的所有约束自动验证 Booking
实例。
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\BookingRepository")
*/
class Booking
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Slot", inversedBy="bookings")
* @Groups({"booking"})
* @ORM\JoinColumn(nullable=true)
* @Assert\Expression(
* "value == null or (value.getStatus() == constant('App\Entity\Slot::STATUS_ACTIVE'))",
* message="Vous ne pouvez pas réserver cette date."
* )
*/
private $slotId;
}
您需要使用 Symfony (documentation about the Validator component) 的 validator
服务。
对服务中新创建的实体调用 validate
方法。
问题很简单
我有一个带有验证约束的实体。
我也有一个服务可以创建这样的实体。
问题是,它不会像 @Assert\Expression
那样触发验证。见下文。
这是一个巨大的失败。请问如何以编程方式触发此类验证?
我需要根据 Booking
class 定义中定义的所有约束自动验证 Booking
实例。
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\BookingRepository")
*/
class Booking
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Slot", inversedBy="bookings")
* @Groups({"booking"})
* @ORM\JoinColumn(nullable=true)
* @Assert\Expression(
* "value == null or (value.getStatus() == constant('App\Entity\Slot::STATUS_ACTIVE'))",
* message="Vous ne pouvez pas réserver cette date."
* )
*/
private $slotId;
}
您需要使用 Symfony (documentation about the Validator component) 的 validator
服务。
对服务中新创建的实体调用 validate
方法。