Bonjour à tous,

Je suis en train d'essayer de surcharger le register du FOSUserBundle pour qu'il ait ses label avec des placeHolders.

Pour ça j'ai fait (en suivant un tuto) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
namespace project\UserBundle\Form\Handler;
 
use FOS\UserBundle\Form\Handler\RegistrationFormHandler as BaseHandler;
 
class RegistrationFormHandler extends BaseHandler
{
    protected function onSuccess(UserInterface $user, $confirmation)
    {
        $user->setUsername($user->getEmail());
        parent::onSuccess($user, $confirmation);
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
namespace project\UserBundle\Form\Type;
 
use Symfony\Component\Form\AbstractType as BaseType;
 
class RegistrationFormType extends BaseType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        parent::buildForm($builder, $options);
 
        $builder->remove('plainPassword')
                ->add('plainPassword', 'password')
                ->get('username')->setAttribute('attr', array('placeholder' => 'Make up a username'))
                ->get('email')->setAttribute('attr', array('placeholder' => 'Enter your email address'))
                ->get('plainPassword')->setAttribute('attr', array('placeholder' => 'Enter your personal password'));
 
      }
 
    public function getName()
    {
        return 'project_user_registration';
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{% extends "FOSUserBundle::layout.html.twig" %}
 
{% block fos_user_content %}
 
{{ form_errors(form) }}
    <form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
     {{ form_widget(form._token) }}
 
     <div>
        {{ form_errors(form.username) }}
        {{ form_widget(form.username) }}
     </div>
     <div>
        {{ form_errors(form.email) }}
        {{ form_widget(form.email) }}
     </div>    
     <div>
        {{ form_errors(form.plainPassword) }}
        {{ form_widget(form.plainPassword) }}
     </div>
     <input type="submit" class="blue_form_button large" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}">
    </form>
 
{% endblock fos_user_content %}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
    <services>
 
        <service id="fos_user.registration.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form">
            <argument>%fos_user.registration.form.type%</argument>
            <argument>%fos_user.registration.form.name%</argument>
            <argument />
            <argument type="collection">
                <argument key="validation_groups">%fos_user.registration.form.validation_groups%</argument>
            </argument>
        </service>
 
        <service id="fos_user.registration.form.type" class="FOS\UserBundle\Form\Type\RegistrationFormType">
            <tag name="form.type" alias="fos_user_registration" />
            <argument>%fos_user.model.user.class%</argument>
        </service>
 
        <service id="fos_user.registration.form.handler.default" class="FOS\UserBundle\Form\Handler\RegistrationFormHandler" scope="request" public="false">
            <argument type="service" id="fos_user.registration.form" />
            <argument type="service" id="request" />
            <argument type="service" id="fos_user.user_manager" />
            <argument type="service" id="fos_user.mailer" />
            <argument type="service" id="project.persona_manager" />
        </service>
    </services>
</container>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
project_user.registration.form.type:
    class: project\UserBundle\Form\Type\RegistrationFormType
    arguments: [%fos_user.model.user.class%]
    tags:
        - { name: form.type, alias: project_user_registration }
 
project_user.registration.form.handler:
    class: project\UserBundle\Form\Handler\RegistrationFormHandler
    arguments: ["@fos_user.registration.form", "@request", "@fos_user.user_manager", "@fos_user.mailer"]
    scope: request
    public: false
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    registration:
        confirmation:
            enabled:            true
            from_email: 
                address:        noreply@project.com
                sender_name:    Admin de project
            template:           projectUserBundle:Registration:email.txt.twig 
        form:
            type:               project_user.registration.form.type
            handler:            project_user.registration.form.handler
            name:               fos_user_registration_form
            validation_groups:  [Registration]
Le problème est que quand je charge ma page de register, il me sort l'erreur :

InvalidArgumentException: The service definition "project_user.registration.form.handler" does not exist.

Que dois je fais ?

Merci