Подтвердить что ты не робот

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

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

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

 $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()" не существуют в классе "App\FrontBundle\Entity\Account"

Как добавить пользовательское поле? А после, как это сделать?

Спасибо. BR.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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