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

Plugins PHP Discussion :

Héritage SfGuardPlugin pour deux classe fille


Sujet :

Plugins PHP

  1. #1
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut Héritage SfGuardPlugin pour deux classe fille
    Bien le bonjour

    Je commence mon premier projet sous symfony et j'aurais besoin d'une petite aide pour la logique des table User.

    Pour ne pas réinventer la roue, je partais sur l'optique de laisser a sfGuardPlugin le soin de gérer l'authentification.

    Le site est un eCommerce, avec deux niveaux d'utilisateurs.
    Les clients pouvant s'inscrire pour effectuer leurs commendes, ...
    Les marchands qui s'inscrivent pour venir y proposer leurs produits.

    J'ai une classe Client et une classe Marchant, je pensais les faire hérité de sfGuardPlugin.
    est ce la bonne solution ?? si oui, uel type d'heritage ?
    ou dois je créer une classe intermédiaire avec le type du User ?
    ou dois je faire une relation 1-n entre mes classe et la table sfUser


    merci d'avance
    http://www.anaprosy.be - Solution et réalisation informatique

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Personnellement, je passerais d'abord par le plugin sfForkedDoctrineApplyPlugin qui t'aidera à gérer les inscriptions/comptes utilisateurs sur ton site. Tu devras avoir deux tables héritant de ou (liées en mode 1-1 à) sf_guard_user_profile.

    sf_guard_user_profile gère uniquement les données 'civiles' des utilisateurs : noms, mails, siret, etc. Elle pointe sur sf_guard_user qui gère les accès, donc qui est liée aux tables de gestion des groupes et des permissions. Les groupes 'clients' et 'vendeurs' viendront alors s'ajouter aux groupes admin/modérateurs/etc. pour la répartition des droits d'accès.

    Bien sûr, tu peux aussi tout regrouper dans sf_guard_user en la dérivant ou en y liant tes tables mais au final la confusion des deux niveaux sera sans doute préjudiciable à la maintenance de ton application.

    Quant à la question : héritage de tables vs lien 1-1, c'est plus une question de gout puisque le lien 1-1 est la façon classique de modéliser l'héritage dans un modèle relationnel classique.

    ou dois je faire une relation 1-n entre mes classe et la table sfUser
    Par contre, le choix entre héritage et lien 1-n ne se pose pas : si tu as un lien 1-n, tu n'as pas d'héritage entre table.

  3. #3
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    voila j'ai un peu continuer mon projet mais je suis coincé lors de l'ajout d'un artisan.
    J'ai modifier le formulaire par defaut pour qu'il accepte mes champs personnels

    sfApplyForm.class.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
     
    public function configure()
    {
    ...
       $profileForm = new ArtisanForm();
       $this->embedForm('Artisan', $profileForm);
    }
     
    public function saveEmbeddedForms($con = null, $forms = null)
    {
    	if (is_null($forms))
    	{
    		$forms = $this->embeddedForms;
    	}
     
    	foreach ($forms as $form)
    	{
    		if ($form instanceof sfFormDoctrine)
    		{
    			$field_name = $this->getObject()->getTable()->getTableName().'_id';
    			if($form->getObject()->contains($field_name)) {
    				$method_name = 'set'.sfInflector::camelize($field_name);
    				$form->getObject()->$method_name($this->getObject()->getId());
    			}
    			// Here it ends
    			$form->getObject()->save($con);
    			$form->saveEmbeddedForms($con);
    		}
    		else
    		{
    			$this->saveEmbeddedForms($con, $form->getEmbeddedForms());
    		}
    	}
     
    	//parent::saveEmbeddedForms($con, $forms);
    }
    A la sauvegarde mon artisan possède bien l'id de son adresse.
    mais ne possède pas l'id du user sfGuardUser


    Voici mon schema
    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
    Artisan:
      actAs:
        Timestampable: ~
      columns:
        id:
          type: integer
          autoincrement: true
          primary: true
        user_id:      { type: integer }
        adresse_id:   { type: integer }
      relations:
        Adresse:
          local: adresse_id
          foreign: id
          foreignAlias: Adresse
        User:
          class: sfGuardUser
          foreign: id
          local: user_id
          type: one
          onDelete: cascade
          foreignType: one
          foreignAlias: User
    http://www.anaprosy.be - Solution et réalisation informatique

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2011, 13h15
  2. Problème de scintillement, pour deux classes ?
    Par Sawyer4 dans le forum Langage
    Réponses: 9
    Dernier message: 25/02/2010, 21h16
  3. Cast pour deux classe (heritage)
    Par moudz dans le forum C++
    Réponses: 1
    Dernier message: 10/04/2009, 12h25
  4. Réponses: 5
    Dernier message: 09/10/2008, 16h40
  5. Héritage d'un événement pour une classe fille
    Par korntex5 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 16h48

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