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

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2018
    Messages : 32
    Points : 37
    Points
    37

    Par défaut Utiliser un fonction dans une autre fonction à l'intérieur d'un controller

    Bonjour,

    Je travaille sur un projet, j'ai problème sur un point, j'ai crée une fonction qui me récupère des outils par rapport à une catégorie et j'aimerai afficher ses outils sauf que la c'est une autre fonction qui s'occupe de l'affichage des outils :
    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
     
    /**
         * @Route("/",
         *     name="main_dashboard",
         *
         *
         * )
         * @param EntityManagerInterface $em
         * @return \Symfony\Component\HttpFoundation\Response
         */
        public function indexAction(EntityManagerInterface $em)
        {
            $em = $this->getDoctrine()->getManager();
            $tools = $em->getRepository('ECOrderBundle:Tool')->findBy(['active'     => true,],
                                                                              ['category' => 'ASC',]);
            dump($tools);
            $user = $this->getUser();
     
            $categories = $em->getRepository(ToolCategory::class)->findAll();
     
            return $this->render(MainBundle:Default:index.html.twig', [
                'tools' => $tools,
                'user' => $user,
                'categories' => $categories
            ]);
    j'aimerai savoir si je pouvais utiliser ma fonction qui trie les outils dans ma fonction indexAction qui affiche les outils
    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
     
    /**
         * @Route("/tools_by_category",
         *     name="tools_by_category",
         *
         * )
         * @param EntityManagerInterface $em
         * @param Request $request
         * @return JsonResponse
         */
        public function getToolsByCategoryAction(EntityManagerInterface $em, Request $request)
        {
            $categoriesSelected = $request->request->get('data');
            dump($categoriesSelected);
            $list_of_category = [];
            foreach ($categoriesSelected as $category) {
                $list_of_category[] = $em->getRepository(Tool::class)->getToolsByCategory(strtolower($category));
            }
            dump($list_of_category);
     
            return new JsonResponse();
        }
    Où s'il y a une autre solution dites moi svp

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    novembre 2013
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : novembre 2013
    Messages : 718
    Points : 983
    Points
    983

    Par défaut

    Bonjour,
    le contrôleur a pour rôle rediriger vers la bonne vue selon une route bien défini.
    les traitements if else etc.. sont a mettre dans des services.
    les requêtes bdd sont à mettre dans des repository.
    un service peux faire appel à un autre service.
    Une fois toutes les traitements sont faites, on fais juste des appels dans le contrôleur

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2018
    Messages : 32
    Points : 37
    Points
    37

    Par défaut

    Ahhh je vois, du coup le plus propre serait de mettre des fonctions réutilisables dans un service et puis l'appeler dans mon controller quand j'en aurai besoin

    EDIT : mais là vu je fais une requête AJAX ça ne pose pas de problème ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    novembre 2013
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : novembre 2013
    Messages : 718
    Points : 983
    Points
    983

    Par défaut

    Pour les appels ajax c est autre chose en faite l appel ajax se fait en mettant une route dans du javascript
    donc il faut qu'une action contrôleur retourne du json , une action correspondante à la route en javascript.
    par contre on peux minimiser du code dans cette action et mettre tout le traitement dans un service / repository et récupérer en contrôleur juste le resultat "Json Response"

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2011, 14h00
  2. appel d'une fonction dans une autre fonction
    Par johan0510 dans le forum Débuter
    Réponses: 7
    Dernier message: 29/03/2010, 17h29
  3. Réponses: 1
    Dernier message: 14/11/2009, 08h07
  4. Déclarer une fonction dans une autre fonction
    Par Baruch dans le forum Caml
    Réponses: 33
    Dernier message: 27/02/2009, 23h29
  5. Réponses: 2
    Dernier message: 31/12/2007, 14h50

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