Bonjour à tous,


Je cherche à utiliser FOSUser avec plusieurs entités.
Je m'explique: pour mon projet, mon UserBundle a 3 entités:

User: où j'ai juste un id et un type.

Provider: où j'ai des infos plus précises sur ce type de 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 
<?php
 
namespace MyProjet\UserBundle\Entity;
 
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
 
/**
 * User
 *
 * @ORM\Table(name="fos_user")
 * @ORM\Entity(repositoryClass="Isl\UserBundle\Entity\UserRepository")
 */
class User extends BaseUser
{
 
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
 
    /**
     * @var string
     *
     * @ORM\Column(name="type", type="string", length=255)
     */
    protected $type;
 
    /**
     * @var string
     *
     * @ORM\OneToOne(targetEntity="MyProjet\UserBundle\Entity\Provider", cascade={"persist"})
     */
    private $userId;
 
 
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }
 
    /**
     * Set type
     *
     * @param string $type
     * @return User
     */
    public function setType($type) {
        $this->type = $type;
 
        return $this;
    }
 
    /**
     * Get type
     *
     * @return string 
     */
    public function getType() {
        return $this->type;
    }
 
    public function getExpiresAt() {
        return $this->expiresAt;
    }
 
    public function getCredentialsExpireAt() {
        return $this->credentialsExpireAt;
    }
 
 
    /**
     * Set userId
     *
     * @param \MyProjet\UserBundle\Entity\Provider $userId
     * @return User
     */
    public function setUserId(\MyProjet\UserBundle\Entity\Provider $userId = null)
    {
        $this->userId = $userId;
 
        return $this;
    }
 
    /**
     * Get userId
     *
     * @return \MyProjet\UserBundle\Entity\Provider 
     */
    public function getUserId()
    {
        return $this->userId;
    }
}
Client: qui fonctionne sur le même principe que l'entité Provider, et donne des infos sur le type de user "client".

J'essaye de mettre en place une gestion utilisateurs avec FOS.
Actuellement, l'inscription, la connexion et la déconnexion fonctionnent: quand je m'inscris, j'indique juste quelques champs (username, password, email et type de user).

Là où je bug, c'est en ce qui concerne la modification de profile: je pense utiliser la gestion de profil telle qu'elle est réalisée dans FOS, mais je ne sais pas trop comment m'y prendre pour que dans la modification de profil, l'internaute puisse entrer les informations qui ont attrait à son type de user, et prenne donc en compte les attributs soit de l'entité Provider, soit de l'entité Client, et ce en fonction du type de user qu'il a choisit dans son inscription.
Comment gérer la surcharge des formulaires?

J'espère m'être bien fait comprendre, par facile d'expliquer tout cela ;-)

Bonne soirée à vous toutes et tous, et d'avance merci pour votre aide!