J'ai cette erreur quand j'essaie de me rendre sur la page d’enregistrement :Warning: spl_object_hash() expects parameter 1 to be object, string given,
HTTP 500 Internal Server Error, Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException.
Je suis conscient que s'agissant de cette erreur bien de résolution existe déjà sur les forums populaires mais cela ne résous pas mon problème. Et c'est pour cette raison que je poste une fois de plus cette erreur en espérant avoir de l'aide. Voici mon controller d’enregistrement:
EmployeController.php
Pour plus d'indication, l'erreur à été relevé ici:
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 public function newAction(Request $request) { $employe = new Employe(); /*$user = new User();*/ $form = $this->createForm('AppBundle\Form\EmployeType', $employe); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager()->getRepository(Employe::class); /*$em2 = $this->getDoctrine()->getManager()->getRepository(User::class)->findBy(['roles']);*/ $vars = explode('@', $employe->getUser()->getEmail()); $employe->getUser()->setUsername($vars[0] . date('s')); /*$employe->setUser($user->setRoles($em2));*/ $em->persist($employe); $em->flush(); return $this->redirectToRoute('employe_show', array('id' => $employe->getId())); } return $this->render('employe/new.html.twig', array( 'employe' => $employe, 'form' => $form->createView(), )); }
Voilà le type de formulaire que j'envoi à la vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $form = $this->createForm('AppBundle\Form\EmployeType', $employe);
EmployeType.php
L'entité employe:
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 public function buildForm(FormBuilderInterface $builder, array $options) { $builder->setAction($options['action']) ->add('nom') ->add('prenom') ->add('tel') ->add('email') ->add('user', EntityType::class, [ 'class' => 'AppBundle\Entity\User', 'choice_label' => function (User $user){ return $user->getRoles(); }, 'choices' => [ 'Employé' => 'ROLE_USER', 'Responsable' => 'ROLE_ADMIN', 'GRH' => 'ROLE_SUPER_ADMIN', ], 'label' => 'Rôle', 'multiple' => true, 'expanded' => false ]);
Employe.php
Et l'entité User:
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 namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Employe * * @ORM\Table(name="employes") * @ORM\Entity(repositoryClass="AppBundle\Repository\EmployeRepository") */ class Employe { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="nom", type="string", length=255) */ protected $nom; /** * @var string * * @ORM\Column(name="prenom", type="string", length=255) */ protected $prenom; /** * @var string * * @ORM\Column(name="tel", type="string", length=255, unique=true) */ protected $tel; /** * @ORM\OneToOne(targetEntity="User", mappedBy="employe") */ private $user; /** * @ORM\OneToMany(targetEntity="Conge", mappedBy="employe") */ private $conges; /** * @ORM\OneToMany(targetEntity="Affecter", mappedBy="employe") */ private $affecters;
User.php
NB: J'utilise FOSUserBundle pour la gestion des utilisateurs
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 namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Model\User as BaseUser; /** * @ORM\Entity * @ORM\Table(name="users") */ class User extends BaseUser { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var array */ //protected $roles; /** * @ORM\OneToOne(targetEntity="Employe", inversedBy="user", cascade={"persist"}) * @ORM\JoinColumn(name="employe_id", referencedColumnName="id", nullable=false) */ private $employe; public function __construct() { parent::__construct(); $this->setPlainPassword(substr(uniqid(), 0, 7)); }
Partager