Администратор Symfony Sonata sonata_type_collection с сущностями Проверка уникальности объекта

Если у вас есть entityA с отношением OneToMany для entityB, а 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 добавьте:

/**
* @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();
}

И это оно! Валидация дочерних сущностей их уникального поля будет работать нормально в классе администратора.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]