В процессе изучения Symfony 2 появился вопрос о том как лучше организовать валидацию элементов Doctrine entities. Например меня есть entity User, в ней есть свойство $email и я хочу быть уверен что это свойство является валидным email.
class User
{
/**
* @var string
* @ORM\Column(type="string")
*/
protected $email;
/**
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string $email
* @return $this
*/
public function setEmail($email)
{
// Вот здесь по-идее должен быть код проверки
$this->email = $email;
return $this;
}
}
Ранее, при использовании Doctrine совместно с ZF1 я просто в методе сеттера использовал соответствующий валидатор и кидал exception в случае некорректного значения. Однако в Symfony я не могу получить DI container из entity, а следовательно не могу корректно получить сервис валидатора. Можно было бы попробовать использовать классы валидаторов непосредственно, но они похоже для этого не предназначены.
Альтернативно, как я понимаю, можно использовать
@Assert\xxxx
аннотации и производить валидацию извне, но на первый взгляд метод выглядит не совсем подходящим, или это только так кажется?
Чтение документации и поиск в Google однозначного ответа не дал, поэтому прошу помощи уважаемого хабрасообщества: как в Symfony предполагается решать задачу валидации свойств Entity классов? Объяснения, ссылки на статьи и / или примеры кода для дальнейшего изучения будут приняты с благодарностью.