Skip to content
This repository was archived by the owner on Jan 8, 2026. It is now read-only.
This repository was archived by the owner on Jan 8, 2026. It is now read-only.

OVERRIDE DEFAULT REGISTRATION TEMPLATE #151

@ALECSQY

Description

@ALECSQY

Hello,

I install PUGXMultiUserBundle and I want, to register two different classes of users, use two different templates. But instead, I have just my layout without any form in my template. If I override the register.html.twig from FOS, it's OK but I can't use it for my two different users - Customer and Company. Where I am wrong ?

Here's my config :

pugx_multi_user:
  users:
    Customer:
        entity: 
          class: UserBundle\Entity\Customer
#          factory: 
        registration:
          form: 
            type: UserBundle\Form\Type\RegistrationCustomerFormType
            name: fos_user_registration
            validation_groups:  [Registration, Default]
          template: UserBundle:Registration:registerCustomer.html.twig
        profile:
          form:
            type: UserBundle\Form\Type\ProfileCustomerFormType
            name: fos_user_profile_form
            validation_groups:  [Profile, Default] 
    Company:
        entity: 
          class: UserBundle\Entity\Company
        registration:
          form: 
            type: UserBundle\Form\Type\RegistrationCompanyFormType
            name: fos_user_registration_company
          template: UserBundle:Registration:registerCompany.html.twig
        profile:
          form: 
            type: UserBundle\Form\Type\RegistrationCompanyFormType

It's my forms:

class RegistrationCompanyFormType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder           
            ->add('name', TextType::class, array('label'=>'Raison sociale',
                                                      'attr'=>['class'=>'form-control']))
            ->add('adress', TextType::class, array('label'=>'Adresse',
                                                      'attr'=>['class'=>'form-control']))
            ->add('city', TextType::class, array('label'=>'Ville',
                                                      'attr'=>['class'=>'form-control']))
            ->add('postcode', TextType::class, array('label'=>'Code Postal',
                                                      'attr'=>['class'=>'form-control']))
            ->add('phone', TextType::class, array('label'=>'Téléphone',
                                                      'attr'=>['class'=>'form-control']))
            ->add('skill', TextType::class, array('label'=>'Métier',
                                                      'attr'=>['class'=>'form-control']))
            ->add('email', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\EmailType'), array('label' => 'Mail'))
            ->add('website', TextType::class, array('label'=>'Site internet',
                                                    'attr'=>['class'=>'form-control']))
            ->add('username', null, array('label' => 'Nom d\'utilisateur'))
            ->add('plainPassword', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\RepeatedType'), array(
                'type' => LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\PasswordType'),
                'options' => array('translation_domain' => 'FOSUserBundle'),
                'first_options' => array('label' => 'Mot de passe'),
                'second_options' => array('label' => 'Confirmez votre mot de passe'),
                'invalid_message' => 'Les mots de passe ne correspondent pas !',
            ))
        ;
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'UserBundle\Entity\Company',
            'csrf_token_id' => 'registration',
            // BC for SF < 2.8
            'intention' => 'registration',
        ));
    }

    // BC for SF < 3.0
    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return $this->getBlockPrefix();
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'fos_user_registration_company';
    }
class RegistrationCustomerFormType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstname', TextType::class, array('label'=>'Prénom',
                                                      'attr'=>['class'=>'form-control']))
            ->add('lastname', TextType::class, array('label'=>'Nom',
                                                      'attr'=>['class'=>'form-control']))
            ->add('adress', TextType::class, array('label'=>'Adresse',
                                                      'attr'=>['class'=>'form-control']))
            ->add('city', TextType::class, array('label'=>'Ville',
                                                      'attr'=>['class'=>'form-control']))
            ->add('postcode', TextType::class, array('label'=>'Code Postal',
                                                      'attr'=>['class'=>'form-control']))
            ->add('phone', TextType::class, array('label'=>'Téléphone',
                                                      'attr'=>['class'=>'form-control']))
            ->add('email', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\EmailType'), array('label' => 'Mail'))
            ->add('username', null, array('label' => 'Nom d\'utilisateur'))
            ->add('plainPassword', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\RepeatedType'), array(
                'type' => LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\PasswordType'),
                'options' => array('translation_domain' => 'FOSUserBundle'),
                'first_options' => array('label' => 'Mot de passe'),
                'second_options' => array('label' => 'Confirmez votre mot de passe'),
                'invalid_message' => 'Les mots de passe ne correspondent pas !',
            ))
        ;
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'UserBundle\Entity\Customer',
            'csrf_token_id' => 'registration',
            // BC for SF < 2.8
            'intention' => 'registration',
        ));
    }

    // BC for SF < 3.0
    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return $this->getBlockPrefix();
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'fos_user_registration';
    }

My controllers

class RegistrationCompanyController extends Controller
{
    public function registerAction()
    {
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('UserBundle\Entity\Company');
    }
}

class RegistrationCustomerController extends Controller
{
    public function registerAction()
    {
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('UserBundle\Entity\Customer');
    }
}

My templates: for Company

{% extends "::base.html.twig" %}

	{% block body %}

		<div style="background-color:white;">
			{% block fos_user_content %}
			    {% trans_default_domain 'FOSUserBundle' %}

			    <form action="{{ path('company_registration') }}"  method="POST">
			        {{ form(form) }}
			        <div>
			            <input type="submit" value="Enregistrez votre société" />
			        </div>
			    </form>
			{% endblock fos_user_content %}
		</div>

	{% endblock %}

For Customer:

{% extends "::base.html.twig" %}
	
	{% block body %}

		<div style="background-color:white;">

			{% block fos_user_content %}
			    {% trans_default_domain 'FOSUserBundle' %}

			    <form action="{{ path('customer_registration') }}"  method="POST">
			        {{ form_widget(form) }}
			        <div>
			            <input type="submit" value="Créez votre compte" />
			        </div>
			    </form>
			{% endblock fos_user_content %}

		</div>

	{% endblock %}

Any help please ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions