2011-10-20 6 views
1

je les deux modèles suivantsBrindille - L'utilisation de plusieurs modèles de l'enfant au sein parent

Parent.html

<ul class="basketItems"> 
    {% for item in items %} 
     {{ item | raw }} 
    {% endfor %} 
</ul> 

child.html

<li> 
    <a href="/go/to/my/page">{{ link.title}}</a> 
</li> 

Maintenant, je voudrais avoir plusieurs instances de child.html dans parent.html. Dans Mon code php, je dois parcourir les enfants et passer l'objet lien pour que la variable link.title puisse être remplie.

Mon code actuel implique le chargement dans parent.html, puis le rendu de chaque enfant et la création d'un tableau php, puis le rendu du parent.html et le passage de tous les html générés des enfants comme entrées de tableau (voir ci-dessous). Existe-t-il un moyen facile de le faire sans avoir à construire un tableau php de fragments html en utilisant éventuellement des blocs Twig.

$parent = $twig->loadTemplate("parent.html"); 
foreach ($items as $item) { 
    $child = $twig->loadTemplate("child.html"); 
    var $link = link::get($item->id)); 
    /* do some other database retreival/data processing work */ 

    $childHtml[] = $child->render(array('item' => $link)); 
} 
$parent->render(array('items' => $childHtml)); 

Merci à l'avance

Répondre

3

essayer:

{% for item in items %} 
    {% include "child.html" %} 
{% endfor %} 

Ici dans le manuel: http://twig.sensiolabs.org/doc/templates.html

Et pour PHP partie:

$parent = $twig->loadTemplate("parent.html"); 


for ($i =0; $i < count($items); $i++) { 

    /* do some other database retreival/data processing work */ 

    /* add additional information to array */ 
    $items[i]['link'] = link::get($item->id));  
} 
$parent->render(array('items' => $childHtml)); 

Est-ce que le contrôleur st uff et passez ce tableau propre au moteur de template. Ne mélange pas ça.

Il est toujours préférable de suivre « La séparation des préoccupations » principe: http://en.wikipedia.org/wiki/Separation_of_concerns

+0

Salut, je viens de mettre à jour mon extrait de code comme lors de la boucle sur chaque élément, je veux faire un peu plus de traitement, comme obtenir le enregistrer la base de données etc – phpNutt

+0

Ajouté meilleure réponse – mblaettermann

Questions connexes