В Symfony 2 проверка выполняется объектом домена.Таким образом, вы должны передать Entity (объект домена) в вашу форму.
Код в контроллере:
public function testAction()
{
$registration = new \Acme\DemoBundle\Entity\Registration();
$registrationForm = $this->createFormBuilder($registration)
->add('email')
->add('password', 'repeated', array('type' => 'password', 'invalid_message' => 'Passwords do not match'))
->getForm();
$request = $this->get('request');
if ('POST' == $request->getMethod()) {
$registrationForm->bindRequest($request);
if ($registrationForm->isValid()) {
return new RedirectResponse($this->generateUrl('registration_thanks'));
}
}
return $this->render('AcmeDemoBundle:Demo:test.html.twig', array('form' => $registrationForm->createView()));
}
1) Построитель форм сопоставит поля формы со свойствами вашей сущностии гидрируйте значения полей формы со значениями свойств объекта.
$registrationForm = $this->createFormBuilder($registration)...
2) Привязка будет гидрировать значения полей формы со всеми опубликованными данными
$registrationForm->bindRequest($request);
3) Для запускавалидация
$registrationForm->isValid()
4) если опубликованные данные действительны, вы должны перенаправить на действие, чтобы сообщить пользователю, что все в порядке, чтобы не отображать предупреждающее сообщение от вашего посредника, который спрашивает, уверены липерепечатывать данные.
return new RedirectResponse($this->generateUrl('registration_thanks'));
Код объекта:
<?php
namespace Acme\DemoBundle\Entity;
class Registration
{
private $email;
private $password;
public function getEmail()
{
return $this->email;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getPassword()
{
return $this->password;
}
public function setPassword($password)
{
$this->password = $password;
}
}
Документ для проверки: http://symfony.com/doc/current/book/validation.html
ПРИМЕЧАНИЕ: нет необходимости добавлять некоторую проверку для объекта паролясвойство, repeatType сделал это для вас