Bonjour,
Voila je rencontre un petit problème avec FOSUserBundle
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 }
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 :)
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 :)