Вопрос по symfony, symfony-forms – Symfony 2: добавить пользовательский элемент формы, а не в сущности

30

Я работаю с 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 (), например & quot; password_confirmation & quot; У меня есть это :

Neither property "password_confirmation" nor method "getPasswordConfirmation()" nor method "isPasswordConfirmation()" exists in class "App\FrontBundle\Entity\Account"

Как я могу добавить пользовательское поле? И после, как проверить это?

Спасибо. BR.

Ваш Ответ

2   ответа
63

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

->add('password_confirmation', 'password', array('mapped' => false))
Это также работает для Symfony 3.0
51

что * password_confirmation * не является частью объекта, используяproperty_path вариант.

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

И затем, чтобы подтвердить это сCallBackValidator.

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

->add('password_confirmation', 'repeated', array(
    // See the docs :)
));
Идеальный ответ.
Большое спасибо ;) Thomas K
Это больше не действует с Symfony 2.1. Вы должны использовать «mapped» = & GT; вместо ложного, например:->add('password_confirmation', 'password', array('mapped' => false));
Большое спасибо.

Похожие вопросы