Partage
  • Partager sur Facebook
  • Partager sur Twitter

Auto-complétion JQuery Ui

Sujet résolu
    22 juin 2020 à 18:11:25

    Bonjour,

    J'utilise l'auto-complétion de JQuery Ui pour une recherche de ville.

    Cela fonctionne parfaitement bien, sauf que, par exemple, si je tape "Saint Martin", ça m'affiche qu'un seul résultat, "Saint-Martin", alors que ça devrait m'en afficher 20... (Boiry-Saint-Martin, Busy-Saint-Martin, Saint-Martin...). Par contre si je tape "Saint-Martin" avec un tiret, j'ai bien mes 20 résultats. Comment gérer le cas particulier d'un internaute qui ne mets pas de tirets ?

    Mon code :

    $(function() {
        $( "#search_city" ).autocomplete({
            source : "{{ path('city_search') }}"
        });
    });


    Controller PHP :

    /**
        * @Route("/city-search", name="city_search")
        */
    public function index(Request $request, CityRepository $cityRepository)
    {
        $term = $request->get('term');
    
        $cities = $cityRepository->findByHint($term);
    
        $arrayJSON = [];
        foreach ($cities as $city) {
            $arrayJSON[] = $city->getRealName();
        }
    
        $response = new Response(json_encode($arrayJSON));
        $response->headers->set('Content-Type', 'application/json');
        return $response;
    }


    Fonction findByHint() :

    public function findByHint($hint)
    {
        return $this->createQueryBuilder('c')
            ->andWhere('c.name LIKE :name')
            ->setParameter('name', '%'.$hint.'%')
            ->orderBy('c.name', 'ASC')
            ->getQuery()
            ->getResult()
        ;
    }

    Merci à vous.

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2020 à 19:35:37

      Hé bien tu mets lefais mettre le tiret par JS ;-)

      Je m'explique : tu peux utiliser avant l'envoi un fonction qui remplace les espaces internes par des tirets, genre :

      let ville = trim(ville);
      ville = ville.replace(/ /g,'-');
      Cordialement

      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2020 à 0:28:25

        Du coup j'ai utilisé la même logique mais du côté Controller. Merci :)

        $term = str_replace(' ', '-', trim($request->get('term')));



        -
        Edité par YinYang2 6 juillet 2020 à 0:30:14

        • Partager sur Facebook
        • Partager sur Twitter

        Auto-complétion JQuery Ui

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown