33

I work with Symfony2 and I would like to create a registration form. I don't want to use FOSUserBundle.

So, I create an Entity Account (with fields : username, password, email...) and I create the form :

 $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();

Now, I want to add a confirmation field for the password. But, when I try to add a field with add() method, for example "password_confirmation" I have this :

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

How can I add a custom field ? And after, how to valid it ?

Thank you. BR.

2 Answers 2

67

An update for Symfony 2.1:

property_path has been deprecated and instead you should use mapped. The syntax remains the same:

->add('password_confirmation', 'password', array('mapped' => false))
Sign up to request clarification or add additional context in comments.

Comments

52

In a normal situation, you'd need to explicitly specify that *password_confirmation* isn't part of the entity, using the property_path option.

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

And then to validate it with a CallBackValidator.

But, in this specific case, where you want to repeat a field, the repeated widget can do that for you.

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

1 Comment

This is no longer valid as of Symfony 2.1. You should use 'mapped' => false instead, eg: ->add('password_confirmation', 'password', array('mapped' => false));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.