Bonjour,

Voila je rencontre un petit problème avec FOSUserBundle

Ce que je fais

Je tente de modifier le template de /profile/edit, pour info j'ai modifier le form Registration sans trop de problèmes, mais en suivant la même procédure pour le profile ça ne fonctionne pas comme je le voudrais.

Voici le formulaire nouvellement créé:

<?php

namespace Intranet\FOSUserBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\FileType;

class ProfileType extends AbstractType
{
    public function buildUserForm(FormBuilderInterface $builder, array $options)
    {
        $builder->remove('username');
        $builder->add('prenom');
        $builder->add('nom');
        $builder->add('Date_De_Naissance',DateType::class, array('years' => range(date('Y') -150, date('Y'))));
        $builder->add('activite', ChoiceType::class, array('choices' => array(
                                                                                'assistant social' => 'assistant social',
                                                                                'cadre' => 'cadre',
                                                                                'chef d\'équipe' => 'Chef d\'équipe',
                                                                                'chef de service' => 'chef de service',
                                                                                'comptable' => 'comptable', 
                                                                                'directeur' => 'directeur',
                                                                                'directeur adjoint' => 'directeur adjoint',
                                                                                'educateur spécialisé' => 'educateur spécialisé',
                                                                                'informaticien' => 'informaticien',
                                                                                'moniteur d\'atelier' => 'moniteur d\'atelier',
                                                                                'psychologue' => 'psychologue',
                                                                                'secrétaire administratif' => 'secrétaire administratif',
                                                                                'secrétaire commercial' => 'secrétaire commercial', 
                                                                                'autre' => 'autre',
                                                                            )));
        $builder->add('telephone_portable');
        $builder->add('code_interne_telephone_portable');
        $builder->add('telephone_fixe');
        $builder->add('code_interne_telephone_fixe');
        $builder->add('file', FileType::class, array('label' => 'Photo','data_class' => null, 'required'=> false));
    }

    public function getParent()
    {
        return 'FOS\UserBundle\Form\Type\ProfileFormType';
    }

    public function getBlockPrefix()
    {
        return 'fos_user_profile';
    }

Et mes deux fichiers de config :

#FOSUser configuration
fos_user:
    db_driver: orm 
    firewall_name: main
    user_class: Intranet\FOSUserBundle\Entity\User
    registration:
        form:
            type: Intranet\FOSUserBundle\Form\RegistrationType
    group:
        group_class: Intranet\FOSUserBundle\Entity\Group
    profile:
        form:
            type: Intranet\FOSUserBundle\Form\ProfileType

services:
#    service_name:
#        class: AppBundle\Directory\ClassName
#        arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
    app.form.registration:
        class: Intranet\FOSUserBundle\Form\RegistrationType
        tags:
            - { name: form.type, alias: app_user_registration }
    app.form.profile:
        class: Intranet\FOSUserBundle\Form\ProfileType
        tags:
            - { name: form.type, alias: fos_user_profile }

Ce que j'obtiens

an exception has been thrown during the rendering of a template ("Unable to render the form because the block names array contains duplicates: "_fos_user_profile_form_widget", "fos_user_profile_widget", "fos_user_profile_widget", "form_widget".").

Je vous donne le template au cas où, mais c'est le même que celui de base.

{% trans_default_domain 'FOSUserBundle' %}

{{ form_start(form, { 'action': path('fos_user_profile_edit'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
    {{ form_widget(form) }}
    <div>
        <input type="submit" value="{{ 'profile.edit.submit'|trans }}" />
    </div>
{{ form_end(form) }}

Merci d'avance pour votre aide :)

2 réponses


Alexandre Monchain
Auteur
Réponse acceptée

Problème régler,

Il faut utiliser

    public function getBlockPrefix()
    {
        return 'fos_user_profile_edit';
    }

J'espère que ça en aidera :)

Cordialement, queqlu'un qui vient de perdre une demi journée de travail sur une connerie :)

Merci beaucoup tu ma beaucoup aidez !