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 :

Conception "component" pour insertion multiple dans page Html [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut Conception "component" pour insertion multiple dans page Html
    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.

    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;
        }
    Déjà je pense que c'est à hurler... Je pensais faire une chaine de xml pour le "recracher" en cache

    Puis ma fonction qui va le renvoyer le tout

    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 offreResult.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% block result %}
     
    			{{ listResult }}
     
    		{% endblock %}
    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
    7
    8
     
    $.post(Routing.generate('lookForByCountry', {'name':cont}),
    function(isLook)
     {
       $('#principale').empty();
       $('#principale').html(isLook);
      }
    );
    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)

    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

  2. #2
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Euh quand je vois ça j'ai peur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $arrayOffer += $this->render('PldOfferBundle:Default:offerTag.html.twig', array(
        			'pays'=>$pays, 'region'=>$region, 'ville'=>$ville,
        			'hand'=>$hand, 'pets'=>$pets, 'details'=>$details));
    Tu as voulu faire quoi avec ça

    Bref j'oublie cette partie car là ça donne envie de s'arracher les yeux x)

    On va faire comme si tu avais envoyé juste une array, genre tu envois ceci au $this->render :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $poss = $this->getDoctrine()
        		->getRepository('PldOfferBundle:OffrePossibility')
        		->findAll();
     
    return $this->render('PldOfferBundle:Default:offreResult.html.twig', array(
        			'listResult'=>$poss));
    Ensuite dans ta page twig il suffit d'afficher ta liste (j'ai pris l'exemple de l'id qui est présent sur l'ensemble des entités Doctrine, tu peux afficher de la même manière n'importe quel champ de ton entité) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% for result in listResult %}
         {{ result.id }}
    {% endfor %}
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    Hello
    Tu as voulu faire quoi avec ça

    Bref j'oublie cette partie car là ça donne envie de s'arracher les yeux x)
    Tu m'as fait rire (oui je suis bon public ). Je me suis tirer les oreilles avant toi oui.

    Oui j'ai bien vu ce que tu as fais et je connais déjà. Le principe de code que tu as mis c'est ce que j'ai déjà dans ma page "offerTag.html.twig".
    Mais ça va un peut plus loin.
    Ou alors je ne suis pas trop loin de la solution et je suis bête.

    Au début j'avais fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $arrayOffer = $this->render('PldOfferBundle:Default:offerTag.html.twig', array(
        			'pays'=>$pays, 'region'=>$region, 'ville'=>$ville,
        			'hand'=>$hand, 'pets'=>$pets, 'details'=>$details));
    ou $arrayOffer était un tableau. "J'empiler" donc des template twig dans un tableau et souhaitais pouvoir les afficher en suite, à la suite, sur une page html.

    Alors c'est comme si tu prenais ton exemple, tu rajouter des informations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% for result in listResult %}
         {{ result.id }}
        {{ result.nom }}
        {{ result.prenom}}
    {% endfor %}
    Ceci est donc ton template. Et il faut que tu l'affiche 20 fois sur une page html qui va incruster ces résultats, où par exemple, ces données seront la liste des personnes inscrites sur ton site.

    Je connais la première étape que tu as mis, mais j'aimerai comprendre comment faire pour "envoyer une liste de template".

    La solution de..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {{ result1 }}
    {{ result 2 }}
    etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    return $this->render('PldOfferBundle:Default:offreResult.html.twig', array(
        			'result1'=>$template1, 'result2'=>$template2));
    .. est à bannir.

    1 - la taille de la liste est inconnu à l'origine
    2 - Pas sur que ça marche déjà

    J'eus bien essayé de faire quelque chose du genre en renvoyant un "tableau de template" via mon controller et ajouter l'ensemble dans une page html via javascript qui intégrera à une balise "div" les résultats.

    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
     
    // on fait une requête au controller
    $.post(Routing.generate('lookForByCountry', {'name':cont}),
    //renvoie la liste des "templates"/"component" - arrayOffer[]
    function(listResult)
    {	
    for (i = 0; i < listResult.length; i++)
    {				
    //ajoute les templates à la suite			
     
    $('div#principale').append(listResult[i]);				
     
    //document.write(i + ' » ' );
    }
    }
    Je fait des test pour apprendre/comprendre ne vous arraché point trop les cheveux s'il vous plait... . Bon ça n'as pas était concluant...

    Ce n'est peut-être pas la meilleur façon de faire alors autant me le dire de suite que je ne parte bancale étant plutôt intéressé par les bonnes pratiques !!

    Quand on regarde bien la fonction "getDetailsAction" on voit bien que je ne peut pas tout intégrer dans un seul template, sinon il faudrai que la fonction sois comme ainsi

    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
    51
     
    function .... 
    {
     
    $pays = array(); $region = array(); $ville=array();
    $hand = array(); $pets = array(); $details =array();
     
    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];
        		}
        		}
        	}
     
     
      return $this->render('PldOfferBundle:Default:offerTag.html.twig', array(
        			'pays'=>$pays, 'region'=>$region, 'ville'=>$ville,
        			'hand'=>$hand, 'pets'=>$pets, 'details'=>$details, 'ii'=>0));
     
    }//end function
    et où le template offerTag.html.twig serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    {% for pay in pays %}
    <div>
      <label for="Localisation">Localisation:</label>
      <text id="pays">{{ pays.name }}</text>
      <text id="region"[i]>{{  region[i].name }}</text>
     
        etc..
    <div>
    {% i +=1 %}
     
    {% endfor %}
    ça semble affreux, bancale, improgrammable et je ne suis pas certain que l'on puisse faire des opération {% i +=1 %} pour simuler un indice de tableaux.

    Donc en fait je suis d'accord avec le principe de ton code, mais ce n'est que le début .

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    Hello

    Je reviens avec quelques nouveauté d'une pseudo marchouille (non plaisante à mon gout).

    J'ai essayé de suivre la continuité du principe évoqué alors donnant ceci :

    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
     
    function getDetailsAction...
    {
     
      $arrayOffer = array();
     
       for($i = 0; $i < count($idOffer) ; $i++)
       {
     
       //formalise les données dans un template stockès dans un tableau 
     
    $arrayOffer[] = $this->render('PldOfferBundle:Default:offerTag.html.twig', array(
        			'pays'=>$pays, 'region'=>$region, 'ville'=>$ville,
        			'hand'=>$hand, 'pets'=>$pets, 'details'=>$details));
     
        }
    return $arrayOffer;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function lookForByCountryAction...
    {
       $result = $this->getDetailsAction("//ce que je cherche en BDD");
     
       return $this->render('PldOfferBundle:Default:offreResult.html.twig', array(
        			'listResult'=>$result));
     
    }
    Ma page offreResult.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {% block result %}
     
       {% for result in listResult %}
     
    	{{ result }}
     
       {% endfor %}
     
    {% endblock %}
    Puis je l'affiche

    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 récupère bien mes données sous format html.twig, en l'occurence, l'ensemble des balises.

    En revenche, il y a un problème de "formalisme" ne sachant comment le nommer.

    Voila le rendu pour plus de comprehension :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: text/html; charset=UTF-8 Date: Fri, 05 Oct 2012 13:43:16 GMT <div class="pro_div"> <p class="toCoord"> <label for="Localisation">Localisation:</label> <text id="pays">France</text> <text id="region">Region Auvergne</text> <text id="ville">Albepierre-Bredons</text> </br> </p> </div> <div class="pro_div"> <p class="toCoord"> <label for="nbadult">nbAdult:</label> <text id="nbadult">2</text> <label for="nbChild">nbChild:</label> <text id="nbChild">0</text> </br> </p> <p class="toCoord"> <label for="nbBathroom">nbBathroom:</label> <text id="nbBathroom">1</text> <label for="nbBeds">nbBeds:</label> <text id="nbBeds">1</text> </br> </p> <p class="toCoord"> <label for="hand">hand:</label> <text id="hand">Non</text> <label for="pets">pets:</label> <text id="pets">Non</text> </br> </p> </br> </div> <div class="pro_div"> <p class="toCoord"> <label for="quartier">Quartier :</label></br> <textarea id="quartier">calme</textarea> </br></br> </p> </div> 
    
    HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: text/html; charset=UTF-8 Date: Fri, 05 Oct 2012 13:43:16 GMT <div class="pro_div"> <p class="toCoord"> <label for="Localisation">Localisation:</label> <text id="pays">France</text> <text id="region">Region Bretagne</text> <text id="ville">Begard</text> </br> </p> </div> <div class="pro_div"> <p class="toCoord"> <label for="nbadult">nbAdult:</label> <text id="nbadult">2</text> <label for="nbChild">nbChild:</label> <text id="nbChild">0</text> </br> </p> <p class="toCoord"> <label for="nbBathroom">nbBathroom:</label> <text id="nbBathroom">1</text> <label for="nbBeds">nbBeds:</label> <text id="nbBeds">1</text> </br> </p> <p class="toCoord"> <label for="hand">hand:</label> <text id="hand">Oui</text> <label for="pets">pets:</label> <text id="pets">Non</text> </br> </p> </br> </div> <div class="pro_div"> <p class="toCoord"> <label for="quartier">Quartier :</label></br> <textarea id="quartier">tranquille</textarea> </br></br> </p> </div>
    au lieu de

    Localisation: France Region Auvergne Albepierre-Bredons
    nbAdult: 2 nbChild: 0
    nbBathroom: 1 nbBeds: 1
    hand: Non pets: Non

    Quartier : calme


    Localisation: France Region Bretagne Begard
    nbAdult: 2 nbChild: 0
    nbBathroom: 1 nbBeds: 1
    hand: Oui pets: Non

    Quartier : tranquille
    Le problème est "en rouge" . Et oui, le tableau "arrayOffer" dans le controller est une liste de "template". Mais la fonction "render" (je présume) y incorpore les entêtes. On a donc autant d'entêtes que de résultat et le navigateur ne sais interprété ça rendant un tas de balise non mis sous forme "ui".

    Si on enlève tout les entêtes et ne laisse que le premier, l'affichage est celui désiré. Voila bien un problème.

    J'ai l'impression que ma pratique n'est pas la bonne...

    Certes il ne manquerai pas grand chose ou alors il existe peut-être un moyen de virer tout entêtes (je ne sais pas comment) sauf le premier mais quelque chose me gêne dans cette manière de faire. Non ?
    D'autant plus que je n'ai pas l'impression de pouvoir maitriser autant que je voudrai le rendu visuels des résultats (autrement dit, en modules accolés deux à deux l'un sous l'autre, etc, et pas en pseudo liste).

    Voila. Je vous évitez de faire des trucs du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rendu +=<text>pays</text>+<text>region</text> etc..
    dans mon contrôler et plutôt utiliser la "force" de twig (orienté objet quoi).

    Je suis ouvert à toute critique, ("flutz" en l’occurrence), orientation, mise en œuvre, bonne pratique, conception, etc !!


    Merci

  5. #5
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    J'ai un peu de mal à comprendre ce que tu veux faire exactement au final.

    Peux-tu faire un exemple (sans code, juste graphique à la rigueur), afin de bien comprendre ce que tu veux faire car là c'est très floue.

    En tout cas ça m'étonnerait fortement que la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       //formalise les données dans un template stockès dans un tableau 
     
    $arrayOffer[] = $this->render('PldOfferBundle:Default:offerTag.html.twig', array(
        			'pays'=>$pays, 'region'=>$region, 'ville'=>$ville,
        			'hand'=>$hand, 'pets'=>$pets, 'details'=>$details));
    soit la bonne

    En voyant ceci j'ai l'impression que tu veux au final avoir plusieurs partie avec le même code twig, mais une liste différente.

    Pourquoi ne pas renvoyer tout simplement une liste de liste?
    C'est parfaitement gérable via twig (je l'ai déjà utilisé pour faire un forum, qui affiche plusieurs catégories et les sous-catégories, le blog catégorie / sous-catégorie étant identique).

    Il suffit alors de faire des boucles for imbriquée/

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {% for listSubResult in listResult %}
         {% for result in listSubResult %}
              {{ result.id }}
              {{ result.nom }}
              {{ result.prenom}}
         {% endfor %}
    {% endfor %}
    Si je n'ai pas bien compris, explique nous ce que tu veux plus en détails, mais pas forcément besoin de code dans l'explication
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    Oui c'est un peut fouillis je pense.

    Du coup j'ai fait un joli dessin !!! C'est de suite plus explicatif je pense (bien vu ; ) ).



    J'espère qu'on verra l'image. Elle est visible mais est accessible que depuis mon ordi (donc s'il n'est pas pas allumé..). Je ne sais pas si le forum la stock dans sa base.

    Voila donc. Sachant bien sur que l'affichage du nombre de template est aléatoire.

    Ps : Une itération imbriqué dans un autre dans twig, c'est intéressant ça pour la suite. Je n'y avais pas pensé.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    J'ai avancé dans mon étude et ais aboutit à une solution. Je vais donc vous l'exposer :

    J'envoie une requête/action au serveur :

    page1.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.location.href= Routing.generate('lookForByCountry', {'name':cont});
    Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function lookForByCountry(...)
    {
    ...
    $result = $this->getDetailsAction($lookfor);
    ...
     
    return $this->render('PldOfferBundle:Default:offreTemplate.html.twig', array(
        			'listResult'=>$result));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function getDetailsAction(...)
    {
    ...
    boucle
    {
    $arraTemp = array("id"=>$userId,
        				"pays"=>$pays, "region"=>$region, "ville"=>$ville
        				);
     
    $arrayOffer[] = $arraTemp;
    }
    return return $arrayOffer;
    }
    OffreTemplate.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
    19
    20
    21
    22
    23
     
    {% block corps %}
     
    	<div class="div_p_result">
    			{% for result in listResult %}
     
     
    	<div class="div_recherche_result" id="{{ result.id }}">
    		<div class="pro_div">
    			<p class="toCoord">
    				<label for="Localisation">Localisation:</label>
    				<text id="pays">{{ result.pays.nameFr }}</text>
    				<text id="region">{{ result.region }}</text>
    				<text id="ville">{{ result.ville }}</text>
    				</br>
    			</p>
    		</div>
    	</div>
     
     
    		{% endfor %}
    	</div>
    {% endblock %}
    ET LE CSS : car c'est lui qui va me permettre de faire "deux liste côtes à côtes "

    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
     
    .div_p_result
    {
    	width:100%;
    	margin-left: auto;
        margin-right: auto;
     
    }
     
    .div_recherche_result
    {
    	width:480px;
      	border:2px solid #a1a1a1;
        border-top-right-radius:25px;
    	border-bottom-right-radius:25px;
    	border-bottom-left-radius:25px;
    	border-top-left-radius:25px;
    	-webkit-border-top-left-radius:2em; /* Safari */
    		display:inline-block;
    		margin-top:10px;
    		margin-left: 10px;
     
    }
    ça fait ce que je veux.

    Mais pensez vous qu'il y aurai une meilleur manière de faire ?

    1 - Du point de vue controller. Car je doit créer un tableaux de valeur puis le faire mouliner/itérer dans twig. Un moyen plus rapide d'exécution ? (alléger la charge du server)

    2 - Du point de vue twig. J'ai fait une itération et je peut avoir deux colonne car j'utilise en css "display : inline-block", mais il y a des contraintes un peut à l'utiliser, difficile à bien gérer son "rendu" avec ça. Même si j'ai réussi à me dépatouiller un peut. ça me frustrera peut-être plus tard.

    Hé oui, je veux partir sur de bonne base

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion applet dans page html
    Par cesoir dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 03/07/2007, 16h59
  2. Insertion php dans page html
    Par Cyril012 dans le forum Langage
    Réponses: 6
    Dernier message: 07/04/2007, 13h22
  3. insertion multiples dans un meme champ
    Par fétémété dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 13/07/2006, 16h16

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