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 :

[FosUserBundle] Extension


Sujet :

Symfony PHP

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut [FosUserBundle] Extension
    Bonjour,

    J'ai commencé voila 3 ou 4 mois à utiliser symfony 2, et assez vite j'ai utilisé FOSUserBundle.

    J'ai créé un Bundle UtilisateurBundle qui me permet de définir mon propre code... pour certaines choses.
    Il a bien dans getParent() le lien vers FosUserBundle.

    Ma classe User n'est que dans ce Bundle, pas dans mon site principal.

    Mon problème, c'est qu'aujourd'hui, j'ajoute dans mon dossier UtilisateurBundle\Controller un fichier ProfileController.php, copié depuis FOSUser Bundle et qui contient maintenant :
    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
     
    <?php
    namespace JaiUneIdee\UtilisateurBundle\Controller;
     
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\Security\Core\Exception\AccessDeniedException;
    use FOS\UserBundle\Controller\ProfileController as BaseController;
     
    class ProfileController extends BaseController
    {
    /**
         * Edit the user
         */
        public function editAction()
        {
        	exit();
            $user = $this->container->get('security.context')->getToken()->getUser();
     
            if (!is_object($user) || !$user instanceof UserInterface) {
                throw new AccessDeniedException('This user does not have access to this     section.');
            }
     
            $form = $this->container->get('fos_user.profile.form');
            $formHandler = $this->container->get('fos_user.profile.form.handler');
     
            $process = $formHandler->process($user);
            if ($process) {
                $user->upload();
                $this->setFlash('fos_user_success', 'profile.flash.updated');
     
                return new RedirectResponse($this->container->get('router')->generate('fos_user_profile_show'));
            }
     
            return $this->container->get('templating')->renderResponse(
            'FOSUserBundle:Profile:edit.html.'.$this->container->getParameter('fos_user.template.engine'),
            array('form' => $form->createView(), 'theme' => $this->container->getParameter('fos_user.template.theme'))
            );
        }
    }
    Et celui ci n'est pas pris en compte.

    Est ce que vous sauriez pourquoi ?
    J'avoue que je ne comprends pas pourquoi mes formulaires sont pris en compte, mes champs supplémentaires sont pris en compte, mes traductions sont pris en compte, mais pas les controllers.

    J'ai vu quelqu'un dire que l'on devait avoir une classe User dans le site principal, qui étendait celle de UtilisateurBundle qui lui même etendait celle de FOSUserBundle... Est-ce vrai ?
    Ca représente pas mal de modification dans mon code pour arriver à ce résultat, donc j'aimerais avoir plus de précisions avant de me lancer la dedans.

    Si quelqu'un a une idée de ce qui pourrait bloquer, j'avoue que je me suis arraché pas mal de cheveux sur ce Bundle depuis que je l'utilise, sans jamais rien y comprendre globalement.

    Merci,
    Pierre

  2. #2
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Euh je dis peut-être une bêtise mais qu'est ce qui indique dans ton Bundle que tu utilises ce controleur? Si c'est une redéfinition d'un contrôleur de FOSUserBundle, ne devrait-il pas plutôt être copié dans app/Resources/FOSUserBundle/etc. ?

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    En fait, je pensais que lorsque l'on étendait le Bundle FosUser, on n'avait qu'a reproduire la structure des dossiers, et mettre les même noms de fichier pour étendre automatiquement les fichiers...

    Mais il semble que ca ne fonctionne pas.

    Doc :
    http://symfony.com/doc/master/cookbo...heritance.html

  4. #4
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Personnellement je viens de tester avec ce que je viens de te dire et cela fonctionne chez moi.

    As-tu fait attention à cela pour la façon que tu utilises toi?
    "The overriding of resources only works when you refer to resources with the @FosUserBundle/Resources/config/routing/security.xml method. If you refer to resources without using the @BundleName shortcut, they can't be overridden in this way."

  5. #5
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Je ne comprends pas vraiment cette phrase j'avoue.

    Je ne touche pas au code dans le dossier FOSUserBundle. On ne touche pas a ce qui est dans vendor.

    Après, j'ai un vague souvenir d'avoir du changer quelque chose dans app il y a 2 mois, je regarderai ce soir si c'est bien le cas. J'avais pensé que c'était assez stupide et en contradiction du caractère indépendant des Bundle(normalement capable d'être utilisé d'une app a l'autre), donc c'est peut être la même chose.

  6. #6
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Oui ce n'est pas forcément très clair. C'est lié à ta façon d'appeler tes ressources de routing dans le routing.yml, mais par défaut c'est déjà fait ainsi il me semble.

    En tout cas il te reste toujours l'option de copier ton ProfileController.php dans app/Resources/FOSUserBundle/Controller/ProfileController.php. Testé et approuvé.

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Quel SGBD correspond aux fichiers à extension .DAT
    Par jcpitaud dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/04/2006, 20h11
  3. [TP]rendre une unité avec l'extension tpu
    Par mmm dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 28/10/2003, 20h09
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Algo de tri, extension
    Par Mouse dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/02/2003, 00h14

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