Bonjour,
Oui je vous avoue le titre est difficile à saisir, comme tout autant le synthétiser en vue de la demande.
Voici un peut ce que je souhaiterai faire.
- Créer un "component", peut-être aussi appelé "Template". C'est à dire une interface HTML qui sera dupliquée et dont les données changeront et seront ajouté à une page Html.
Par exemple, si vous faites une recherche pour voir la liste des trains sur le site sncf, vous avez lors des résultats, un ensemble de bloc qui ont tous la même forme et où les données sont différents par rapport aux prix, heures, etc.
J'aimerai donc pouvoir faire ça mais je ne vois comment le conceptualiser et écrire avec php/html/javascript/twig
Voici un peut ce que j'ai fais :
J'ai une fonction dans mon controler, qui va récupérer les données et les mettrent en format html. Déjà je pense que c'est faux. Le render ne doit pas renvoyer pouvoir réaliser ça.
Déjà je pense que c'est à hurler... Je pensais faire une chaine de xml pour le "recracher" en cache
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
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 public function getDetailsAction($idOffer) { //$arrayOffer = array(); $arrayOffer = "C'est trop genial"; for($i = 0; $i < count($idOffer) ; $i++) { $tempId = $idOffer[$i]; $offer = $tempId; $pays = $offer->getCountry(); $region = $offer->getNameRegionPays(); $ville = $offer->getNameCity(); $poss = $this->getDoctrine() ->getRepository('PldOfferBundle:OffrePossibility') ->findAll(); /** DETAILS **/ $details = $offer->getDetails(); $length = count($poss); $scdFind; $hand; $pets; $schands = $details->getHandicapAccess(); for($la = 0; $la < $length; $la++) { if($schands == $poss[$la]->getId()) { $hand = $poss[$la]; } } $scPets = $details->getPetsWelcome(); for($la = 0; $la < $length; $la++) { if($scPets == $poss[$la]->getId()) { $pets = $poss[$la]; } } $arrayOffer += $this->render('PldOfferBundle:Default:offerTag.html.twig', array( 'pays'=>$pays, 'region'=>$region, 'ville'=>$ville, 'hand'=>$hand, 'pets'=>$pets, 'details'=>$details)); } return $arrayOffer; }
Puis ma fonction qui va le renvoyer le tout
Dans offreResult.html.twig
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 public function lookForByCountryAction($name) { $idCont = $lookfor = $this->getDoctrine() ->getRepository('PldLocalisationBundle:VilleDUMondeContinent') ->findOneByCodeContinent($name); $lookfor = $this->getDoctrine() ->getRepository('PldOfferBundle:OffreAcces') ->getLookForByCountry($idCont->getId()); $result = $this->getDetailsAction($lookfor); return $this->render('PldOfferBundle:Default:offreResult.html.twig', array( 'listResult'=>$result)); }
Dans ma page qui à appelé le controller et fera l'insertion finale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 {% block result %} {{ listResult }} {% endblock %}
Je vous présente juste mon code pour l'idée, car ça ne me va pas du tout et ça n'affiche rien du tout de tout manière (les données sont bien récupérés de la base en revanche)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $.post(Routing.generate('lookForByCountry', {'name':cont}), function(isLook) { $('#principale').empty(); $('#principale').html(isLook); } );
Je ne vois pas trop comment concevoir ceci et utiliser peut-être des fonctions qui me simplifierai la vie.
Sous un autre langage j'utilise une fonction "addChild" et c'était simple, mais étant débutant en PHP, cette fonction n'est pas pareil et ajout qu'un seul nœud xml si j'ai bien compris (fin en même temps, un nœud peut avoir des sous nœud et devrai ajouter l'ensemble. Je suis un peut perdu j'avoue).
J'aimerai bien alors qu'on m'oriente sur la démarche et les étapes à suivre pour arriver à ceci. Il y a des choses qui m'échappe.
Espérant avoie était explicite.
Merci de m'avoir déjà lu
Partager