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
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(),
    ));
}
Pour plus d'indication, l'erreur à été relevé ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$form = $this->createForm('AppBundle\Form\EmployeType', $employe);
Voilà le type de formulaire que j'envoi à la vue:
EmployeType.php
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
        ]);
L'entité employe:

Employe.php

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;
Et l'entité User:

User.php
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));
    }
NB: J'utilise FOSUserBundle pour la gestion des utilisateurs