IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Créer une BaseEntity comme dans les bundles FOS [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Par défaut Créer une BaseEntity comme dans les bundles FOS
    Bonsoir à tous,

    Voilà j'ai créé un service et j'essaye de créer une entité de base que les utilisateurs devront étendre en créant une entité dans leur bundle (comme dans le FOSUserBundle en fait).

    Si j'ai bien compris le fonctionnement :

    1. Je crée un Model dans MonBundle\Model en abstract
    2. Je crée une entité dans MonBundle\Entity en abstract qui étend le Model
    3. Dans un bundle différent, je crée une entité qui étend l'entité au point, et celle-ci doit contenir un champ id.

    Apparement il doit me manquer qqch, car quand je fais un generate:entities + schema:update dans le bundle Demo de la SE, je n'ai que mon champ id qui se met en bdd.

    Si qqun pouvait m'éclairer, ce serait cool

    Je vous met ici mes codes au cas où:

    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
     
    <?php
    //Model
    namespace Mediaphragm\VisitorsBundle\Model;
     
    abstract class Visitor
    {
    	protected $id;
     
        /**
    	* @var string
    	*/
        protected $username;
     
        public function __construct()
        {
     
        }
     
    	/**
    	* @return string
    	*/
        public function getUsername()
        {
            return $this->username;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    //Entity
    namespace Mediaphragm\VisitorsBundle\Entity;
     
    use Mediaphragm\VisitorsBundle\Model\Visitor as AbstractVisitor;
     
    abstract class Visitor extends AbstractVisitor
    {
    }
    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
     
    <?php
    //Entité dans le bundle Demo qui doit étendre mon bundle
    namespace Acme\DemoBundle\Entity;
     
    use Mediaphragm\VisitorsBundle\Entity\Visitor as BaseVisitor;
    use Doctrine\ORM\Mapping as ORM;
     
    /**
    
     * @ORM\Entity
     * @ORM\Table(name="mediaphragm_visitors")
     */
    class Visitor extends BaseVisitor
    {
     
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
     
    	public function __construct()
    	{
    		parent::__construct();
    	}
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
    }

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Salut,

    Je ne suis pas un expert, mais voici mon avis sur la chose:
    Mettre des classes dans bundle/model c'est inutile. Pourquoi faire des classes d'entité vides ? Bref je trouve bien mieux de directement les mettre en entité. La seule chose est qu'elles ne seront pas abstraites. Mais après tout pourquoi devraient-elles l'être ?

    Pour ce qui est de ton problème c'est tout simplement parce que sur FOSUserBundle les champs ne sont pas définis en annotations mais en XML. C'est pour cela qu'il n'y a pas d'annotations dans la classe abstraite ;-) .

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Citation Envoyé par Nek.dev Voir le message
    Je ne suis pas un expert, mais voici mon avis sur la chose:
    Mettre des classes dans bundle/model c'est inutile. Pourquoi faire des classes d'entité vides ?
    Pour pouvoir gérer Entité et Document. FOSUB utilise un model car il laisse le choix du type de stockage au dev final.

    Donc effectivement si tu n'as pas besoin de cette flexibilité, pas besoin de passer par un model. Tu aurais une entité qui ressemble à ca : https://github.com/winzou/BookBundle...tity/Entry.php Puis dans ton bundle tu hérites de cette classe comme tu le fais avec celle de FOSUB.

  4. #4
    Membre averti
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Par défaut
    Tout à fait Winzou, même si dans un premier temps ce n'est pas une priorité pour le bundle de pouvoir travailler aussi bien en odm/orm/couchdb, ce serait bête de ne pas partir sur une base flexible directement.

    J'ai pour finir réussi à faire fonctionner la génération, il s'agissait d'une erreur de type dans mon metadata (je ne suis pas encore tout à fait familiarisé avec le xml )

    ++

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Si tu galères avec le xml essaie de voir avec le yaml. (oui, c'est plus simple je trouve ^^)

  6. #6
    Membre averti
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Par défaut
    Oui je trouve aussi, mais ce bundle peut se retrouver en public, donc comme préconisé par sf, c'est en xml.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2010] Créer une liste déroutante dans les propriétés de la webpart
    Par Adlery dans le forum SharePoint
    Réponses: 2
    Dernier message: 13/02/2012, 17h47
  2. Réponses: 15
    Dernier message: 27/09/2010, 22h29
  3. [SP-2007] Créer une fonction utilisable dans les champs calculés
    Par lolomoss dans le forum SharePoint
    Réponses: 4
    Dernier message: 25/06/2009, 08h49
  4. Réponses: 3
    Dernier message: 18/06/2008, 11h49
  5. Réponses: 0
    Dernier message: 17/06/2008, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo