getComponentContainer()->getCitiesComponent(); $term = $request->get('term'); $context = $request->get('context'); $data = [ 'boost' => 'population', ]; if (strlen($term) == 5 && is_numeric($term)) { $data['codePostal'] = $term; } else { $data['nom'] = $term; } // Uniquement bourgogne franche-comté /*$result = array_merge( json_decode($citiesComponent->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 27]))), json_decode($citiesComponent->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 44]))) );*/ $result = json_decode($citiesComponent->callCitiesApi('get', 'communes', $data)); $return = []; foreach ($result as $city) { $codesPostaux = $city->codesPostaux; if ($context == 'frontend') { $label = '' . $city->nom . ' ' . $codesPostaux[0] . ''; } else { $label = $city->nom . ' - ' . $codesPostaux[0]; } $return[] = [ 'label' => $label, 'city' => $city->nom, 'value' => $city->code ]; } if ($context == 'frontend') { $return = [ 'items' => $return ]; } return new JsonResponse($return); } /** * @Route("/api-addresses", name="api_addresses") */ public function addresses(Request $request): JsonResponse { $citiesComponent = $this->getComponentContainer()->getCitiesComponent(); $return = []; $address = $request->get('address'); $context = $request->get('context'); $results = $citiesComponent->callAddressApi($address); foreach ($results as $result) { if ($result->getStreetNumber() && strlen($result->getStreetNumber()) > 0) { $streetNameNumber = $result->getStreetNumber() . ' ' . $result->getStreetName(); $return[] = [ 'label' => $streetNameNumber, 'value' => $streetNameNumber, 'latitude' => $result->getCoordinates()->getLatitude(), 'longitude' => $result->getCoordinates()->getLongitude() ]; } } if ($context == 'frontend') { $return = [ 'items' => $return ]; } return new JsonResponse($return); } }