Symfony 2: Добавление пользовательского элемента формы, а не в объект

Я работаю с Symfony2 и я хотел бы создать форму регистрации. Я не хочу использовать FOSUserBundle.

Итак, я создаю учетную запись сущности (с полями: имя пользователя, пароль, электронная почта...) и я создаю форму:

 $account = new Account();

$form = $this->createFormBuilder($account)
  ->add('username',         'text', array('label' => 'Nom de compte :'))
  ->add('password',    'password', array('label' => 'Mot de passe :'))
  ->add('email',            'email', array('label' => 'Adresse email :'))
  ->getForm();

теперь я хочу добавить поле подтверждение пароля. Но, когда я пытаюсь добавить поле с помощью метода add (), например " password_confirmation" У меня вот что:

ни свойство "password_confirmation" ни метод "getPasswordConfirmation () "или метод" isPasswordConfirmation () "существует в классе"AppFrontBundleEntityAccount"

Как добавить настраиваемое поле ? А после, как его проверить ?

спасибо. БРОМ.

2 ответов


в нормальной ситуации вам нужно будет явно указать, что * password_confirmation* не является частью сущности, используя property_path.

->add('password_confirmation', 'password', array('property_path' => false))

а затем проверить его с помощью CallBackValidator.

но, в этом конкретном случае, когда вы хотите повторить поле,повторное виджет может сделать это за вас.

->add('password_confirmation', 'repeated', array(
    // See the docs :)
));

обновление для Symfony 2.1:

property_path устарел, и вместо этого вы должны использовать соотнесенные. Синтаксис остается прежним:

->add('password_confirmation', 'password', array('mapped' => false))