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 :

Utiliser un fonction dans une autre fonction à l'intérieur d'un 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 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    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 é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,
    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
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    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 é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
    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, 13h00
  2. appel d'une fonction dans une autre fonction
    Par johan0510 dans le forum Langage
    Réponses: 7
    Dernier message: 29/03/2010, 16h29
  3. Réponses: 1
    Dernier message: 14/11/2009, 07h07
  4. Déclarer une fonction dans une autre fonction
    Par Baruch dans le forum Caml
    Réponses: 33
    Dernier message: 27/02/2009, 22h29
  5. Réponses: 2
    Dernier message: 31/12/2007, 13h50

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