Symfony Sonata Admin sonata_type_collection,带有实体UniqueEntity验证

时间:2017-05-18 13:40:15

标签: php symfony sonata-admin unique-constraint

当entityB上的entityA与OneToMany关系时,entityB对字段具有唯一约束,如:

/**
 * @ORM\Column(type="string", length=100, nullable=true, unique=true, options={"default":""})
 * @Assert\Valid()
 * @var string
 */
protected $url = '';

和你的常规你将添加到实体类注释:

@UniqueEntity(fields={"url"}, message="Url can be assigned only to one trigger")

但它不适用于entityA的奏鸣曲管理类。 为了使它工作,有一个非常好的和简单的方式:

在entityA的admin类中添加:

/**
 * @param ErrorElement $errorElement
 * @param mixed $object
 */
public function validate(ErrorElement $errorElement, $object)
{
    parent::validate($errorElement, $object);

    $errorElement
        ->with('entityB') //field describing connection to entityB in entityA
        ->addConstraint(
            new All(
                [
                    new UniqueEntity(
                        [
                            'fields' => 'url',
                            'message' => 'Url can be assigned only to one trigger',
                        ]
                    ),
                ]
            )
        )
        ->end();
}

那就是它!验证其独特领域的子实体在管理类中可以正常工作。

0 个答案:

没有答案