2016-05-19 2 views
0

Каковы наилучшие методы, связанные с установкой ограничений валидации в ваши проекты?Проверка в Symfony2: Entity vs FormType - лучшие практики?

В большинстве случаев вы храните его в Entities или FormTypes?

Каковы плюсы и минусы?

Вот что я имею в виду:

FormType пример

$builder 
    ->add('firstName', TextType::class, array(
     'constraints' => array(
      new NotBlank(), 
     ), 
    )) 
; 

Entity пример

class Author 
{ 
    /** 
    * @Assert\NotBlank() 
    */ 
    protected $firstName; 
} 

ответ

4

Мой ответ: как.

Иногда у вас есть ограничения, которые будут применяться к вашим Entity-приложениям. Но иногда ограничения будут применяться только в контексте формы. В этом последнем случае вы можете использовать ограничения непосредственно в своей форме, или вы можете использовать validation_groups.

Я, как правило, чаще всего использую ограничения Entity, потому что я нахожу его более чистым и не вносит несоответствия в мое приложение.

+2

Лучшее решение по-прежнему не использовать сущности в качестве объектов данных. Записывайте объекты передачи данных, чтобы избежать тонны головных болей и сделать формы намного проще. В этом случае я могу сказать, что ваш ответ действительно правильный. –

+0

Любой фрагмент? Мне интересно, как вы справляетесь с этим должным образом. – Terenoth

+1

Это просто объект данных с геттерами/сеттерами (POPO), например мой ChangeUsernameType имеет ChangeUsernameData, он просто содержит старое и новое имя пользователя, мой тип имеет повторяющийся тип в новом и сопоставляет старый с существующим именем пользователя. После представления и действия я просто делаю $ user-> setUsername ($ myDto-> getUsername()); и я промою своего пользователя. Это не позволяет моим сущностям попасть в недействительное состояние и, что еще хуже, быть случайно сброшенным в этом состоянии. Это также означает, что я могу формировать свои формы, не будучи лишенными моей модели. –

Смежные вопросы