Bonjour,
je suis entrain de développer un site avec synfony 4.3 et j'ai un problème avec le formulaire qui permet de mettre à jour le profil d'un utilisateur.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <?php namespace App\Form; use App\Entity\User; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\RepeatedType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use App\Form\AvatarType; class UserInfoType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('username', TextType::class) ->add('signature', TextareaType::class, ['required' => False, 'empty_data' => ""]) ->add('city', TextType::class, ['required' => False, 'empty_data' => ""]) ->add('avatar', AvatarType::class, [ 'label' => false ]) ->add('age', NumberType::class) ->add('save', SubmitType::class, ['label' => 'Mettre à jour']) ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => User::class, ]); } }(Mon entité USER n'est pas entière ici , je ne pense pas que c'est pertinent )
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 namespace App\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Validator\Constraints as Assert; use App\Entity\Avatar; /** * @ORM\Entity(repositoryClass="App\Repository\UserRepository") * @ORM\Table(name="user") * @UniqueEntity(fields="email", message="Cette adresse e-mail est déjà utilisée.") * @UniqueEntity(fields="username", message="Ce pseudo est déjà utilisé.") */ class User implements UserInterface { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @var string * * @ORM\Column(type="string", unique=true) * @Assert\NotBlank() */ private $username; /** * @var string * * @ORM\Column(type="string", unique=true) * @Assert\NotBlank() * @Assert\Email() */ private $email; /** * @ORM\Column(type="string", length=255) */ private $password; /** * @ORM\Column(type="array") */ private $roles = []; /** * @ORM\Column(type="integer") */ private $status;
et voici mon contrôleur.
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 /** * @Route("/user/edit", name="display_myself_edit") */ public function UserMySelfEdit(Request $request) { $user = $this->getUser(); $form = $this->createForm(UserInfoType::class, $user); $form->handleRequest($request); if ($form->isSubmitted()) { if ($form->isValid()){ $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); } return $this->redirectToRoute('display_logged'); } $paths = array(array('name' => $user->getUsername(), 'link' => $this->generateUrl('display_himself', ['name' => $user->getUsername()])), array('name' => 'modification', 'link' => $this->generateUrl('display_myself_edit') )); return $this->render( 'User/edit.html.twig', array('form' => $form->createView(), 'user' => $user, 'paths' => $paths)); }
Ca fonctionne sauf quand je rename via le formulaire mon utilisateur connecté avec un nom déjà pris par l'utilisateur.
Je suis logout directement. le firewall symfony deconnecte l'utilisateur. Je n'arrive pas à catcher cette erreur.
Pouvez vous m'aider ? merci d'avance
Partager