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.
Ответы
Ответ 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))