2016-10-12 3 views
2

Я хочу, чтобы сущность-доктрина отличалась по отдельности, когда объект был создан, обновлен или удален.Symfony - Проверять сущность по-разному в INSERT, UPDATE или DELETE

В моем классе объектов есть средство проверки ограничений сущности.

// src/AppBundle/Entity/AcmeEntity.php 
use AppBundle\Validator\Constraints as AcmeAssert; 

/** 
* @AcmeAssert\CustomConstraint 
*/ 
class AcmeEntity 
{ 
    // ... 
    protected $name; 

    // ... 
} 

В моей CustomConstraint я хочу определить, если Entity будет обновлен, создан или удалить для выполнения специального валидатора.

Использование единицы работы - это решение?

Каков наилучший способ сделать это?

Я думаю, что эта проблема часто встречается во многих приложениях?

Спасибо и все;)

+3

Я предлагаю вам использовать группы проверки symfony2 для переключения с помощью другого механизма проверки ограничений. – Matteo

ответ

3

Вы можете либо использовать validation groups based on the submitted data или обрабатывать itwhen вы создаете форму, передавая группу проверки. Например, в вашем контроллере при создании формы;

$form = $this->createForm(new AcmeType(), $acme, ['validation_groups' => ['create']]); 

Тогда вы создадите нечто подобное;

/** 
    * Get name 
    * 
    * @Assert\Length(min=2, max=11, groups={"create", "update"}) 
    * @AcmeAssert\ContainsAlphanumeric(groups={"create"}) // only applied when create group is passed 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 
+0

На самом деле логичнее делать валидацию с помощью goups и определять тип проверки перед выполнением проверки достоверности Entity. Спасибо за Ваш ответ ! –

1

Это то, для чего предназначены группы валидации.

Поскольку Symfony формы чтения валидаций из аннотации сущностей и использовать внутренне компонент Validator вы бы взглянуть на эти статьи в документации: