Change Symfony2 FOSUserBundle registration form PO

2019-09-14 01:47发布

问题:

This is how the registration form of FOSUserBundle looks like:

<form action="/Symfony/web/signup/" method="POST" class="fos_user_registration_register">
<div id="fos_user_registration_form">
    <input type="hidden" id="fos_user_registration_form__token" name="fos_user_registration_form[_token]" value="c248f3ef17b082803ae9948c03d137c380f0dc24"/>
    <div>
        <label for="fos_user_registration_form_username">Username:</label><input type="text" id="fos_user_registration_form_username" name="fos_user_registration_form[username]" required="required" maxlength="255" pattern=".{2,255}"/>
    </div>
    <div>
        <label for="fos_user_registration_form_email">Email:</label><input type="email" id="fos_user_registration_form_email" name="fos_user_registration_form[email]" required="required"/>
    </div>
    <div>
        <label for="fos_user_registration_form_plainPassword_first">Password:</label><input type="password" id="fos_user_registration_form_plainPassword_first" name="fos_user_registration_form[plainPassword][first]" required="required"/>
    </div>
    <div>
        <label for="fos_user_registration_form_plainPassword_second">Verification:</label><input type="password" id="fos_user_registration_form_plainPassword_second" name="fos_user_registration_form[plainPassword][second]" required="required"/>
    </div>
</div>
<div>
    <input type="submit" value="Register"/>
</div>

So, as you can see,

<input type="email" id="fos_user_registration_form_email" name="fos_user_registration_form[email]"

MAIN QUESTION: How can I change the id to something like id="email" and also the name to something like name="email"? And it has to work, obviously.

Here you can see: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/views/Registration/register_content.html.twig {{ form_widget(form) }}, but I can't trace this to where it goes. I also presume the RegistrationFormHandler would have to be edited to support these parameters.

回答1:

Alter buildForm function in RegistrationFormType class:

# FOSUserBundle/Form/Type/RegistrationFormType.php

class RegistrationController extends ContainerAware
{

   // ...

   public function getName()
   {
       return 'fos_user_registration';
   }

}

Change fos_user_registration to whatever you want.