1

我有以下两个模板

父.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>

现在我想在 parent.html 中有多个 child.html 实例。在我的 php 代码中,我必须遍历子项并传入链接对象,以便可以填充 link.title 变量。

我当前的代码涉及我加载 parent.html,然后渲染每个孩子并创建一个 php 数组,然后渲染 parent.html 并将所有生成的孩子的 html 作为数组条目传递(见下文)。是否有任何简单的方法可以做到这一点,而不必通过可能使用 Twig 块来构建 html 片段的 php 数组。

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

提前致谢

4

1 回答 1

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

做控制器的工作并将干净的数组传递给模板引擎。不要混在一起。

遵循“关注点分离”原则总是更好: http ://en.wikipedia.org/wiki/Separation_of_concerns

于 2011-10-20T13:51:11.873 回答