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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
<?php
namespace Vbo\VegiswapBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Vbo\VegiswapBundle\Entity\Annonce;
use Vbo\VegiswapBundle\Form\Type\ContactType;
use Vbo\VegiswapBundle\Form\Type\RechercheType;
class DefaultController extends Controller
{
public function searchAction()
{
// Initialise le formulaire
$form = $this->get('form.factory')->create(new RechercheType());
$request = $this->get('request');
// Si methode = POST, le formulaire vient d'être soumis
if ($request->getMethod() == 'POST')
{
// Récupère les valeurs du formulaire
$form->bindRequest($request);
$data = $form->getData();
$user_lat = $data['user_lat'];
$user_lng = $data['user_lng'];
$address = $data['address'];
// Si l'adresse est renseignée mais que lat/lng sont vides, on appelle le service gmaps pour récupérer les coordonnées
if ($address<>"" && ($user_lat=="" || $user_lat==0 || $user_lng=="" || $user_lng==0)) {
try {
$obj = json_decode(file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false'), true);
$user_lat = $obj["results"][0]["geometry"]["location"]["lat"];
$user_lng = $obj["results"][0]["geometry"]["location"]["lng"];
$address = utf8_decode($obj["results"][0]["address_components"][0]["long_name"]).' ('.$obj["results"][0]["address_components"][1]["short_name"].')';
>>>> $form->setData('user_lat', $user_lat); // Quelle est la bonne syntaxe ???????
>>>> // Et idem pour lng et address
}
catch (Exception $e) {
$logger->error('Erreur lors de la recuperation lat/lng : '.$e->getMessage());
}
}
// Recuperation des resultats
$results = ...
// Affichage de la page avec les résultats
return $this->render('VboVegiswapBundle:Default:index.html.twig', array(
'form' => $form->createView(),
'results' => $results,
));
}
}
} |
Partager