2011-10-20 3 views
1

У меня есть следующие два шаблонаTwig - Использование нескольких шаблонов детей в родителях

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> 

Теперь я хотел бы иметь несколько экземпляров child.html в parent.html. В моем php-коде мне нужно пропустить дочерние элементы и передать объект ссылки, чтобы можно было заполнить переменную link.title.

Мой текущий код включает в себя загрузку в parent.html, затем рендеринг каждого дочернего элемента и создание массива php, а затем рендеринг parent.html и передачу всего сгенерированного html дочерних элементов в виде записей массива (см. Ниже). Есть ли простой способ сделать это, не создавая php-массив html-фрагментов, возможно, используя блоки 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)); 

Заранее спасибо

ответ

3

попробовать это:

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

Вот в руководстве: http://twig.sensiolabs.org/doc/templates.html

И для PHP части:

$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)); 

ли контроллер й uff и передать этот чистый массив шаблону. Не смешивайте это.

Это всегда лучше следовать «Разделение проблем» принципа: http://en.wikipedia.org/wiki/Separation_of_concerns

+0

Привет, Я только что обновил свой фрагмент кода, как, когда цикл по каждому пункту, я хочу сделать некоторые обработки, такие как получить запись базы данных и т. д. – phpNutt

+0

Добавлен лучший ответ – mblaettermann

Смежные вопросы