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 :

Function utilisé par plusieurs controller


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Par défaut Function utilisé par plusieurs controller
    Bonjour à tous,

    Sur l'application que je suis en train de développer, j'utilise un panel Admin avec des notifications (exemple : un client envoi un message, rempli un devis, etc ...) , tous cela est géré par notification coté Admin.

    Actuellement je possède un bundle admin comprenant un controller pour chaque module (exemple : commentaire, profil, devis, recrutement etc). Toute les pages de l'application sont géré par twig et utilise une base.html.twig (comprenant les notifications) . Dans chacun de mes controllers je duplique les mêmes fonctions qui permettent l'affichage des notifications, ce qui rend le code assez lourd.

    Peut on pas créer un controller qui regroupant toute les fonctions identique, et les utilisés à travers les différents controller ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function countUser()
        {
            $repoUser = $this
                ->getDoctrine()
                ->getRepository('UserBundle:User');
     
            $users = $repoUser->findAll();
            $countUsers = count($users);
     
            return $countUsers;
        }
    Cette fonction est par exemple présente sur AdminController, commentController, MessageController, profilController, quotationController, recrutingController et userController. Donc 7 supplication.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bonjour,
    C'est une bonne occasion pour apprendre à utiliser les services .
    plus de détails ici

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Par défaut
    Merci 😊

    Je vais suivre le tuto, je reviens si toute fois j'ai un soucis.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 68
    Par défaut
    Donc j'ai créé mon service comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    services:
        template:
            class: adminBundle\Service\notification
    Et la class :

    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
     
    <?php
    namespace adminBundle\Service;
     
     
    class notification
    {
        public function countUser()
        {
            $repoUser = $this
                ->getDoctrine()
                ->getRepository('UserBundle:User');
     
            $users = $repoUser->findAll();
            $countUsers = count($users);
     
            return $countUsers;
        }
    }
    Voici mon erreur :

    Attempted to call an undefined method named "getDoctrine" of class "adminBundle\Service\notification".


    Avant cela j'ai fait un test avec juste un return 'test', ca à fonctionné. Le problème viens des doctrines.

    Une solution ?

    Merci 😊

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bien, j'ai pensé que tu va rencontré ce probleme , mais c'est bien de le rencontrer
    Un exemple ici/ injecte l' em entitymanagerr .
    Dans d'autre cas tu aura besoin d'injecter des services customs dans cette service mais bon.
    N'oublie pas le constructeur avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Doctrine\ORM\EntityManager $em

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Du coup,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            $repoUser = $this->getDoctrine() ->getRepository('UserBundle:User');
    deviens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             $repoUser = $this->em->getRepository('UserBundle:User');

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2014, 12h12
  2. Container utilisé par plusieurs Adapter
    Par Gébix dans le forum Android
    Réponses: 2
    Dernier message: 10/03/2013, 17h27
  3. Réponses: 4
    Dernier message: 15/09/2010, 20h21
  4. recuperer un bean qui est utilisé par plusieurs jsp
    Par morgo1980 dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/06/2007, 19h59

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