如何在Twig模板中迭代2D数组?

时间:2015-10-27 19:48:48

标签: php arrays symfony for-loop twig

请保持温和......相对较新的PHP / Symfony / Twig ......

我有一个同事的代码,它对F5执行REST调用,并构建一个由结果集的子集组成的数组。该数组将有三个“列”和一行或多行。这是一个例子:

    array(3) { 
[0]=> array(3) {
    ["condition"]=> string(8) "Contains"
    ["uri"]=> string(10) "/1234/kkkl"
    ["pool"]=> string(50) "/Common/gateway-test-in-proc.domain.net_4041"
}
[1]=> array(3) {
    ["condition"]=> string(8) "Contains"
    ["uri"]=> string(34) "/portal_WS/1.0/authenticateMember"
    ["pool"]=> string(50) "/Common/gateway-test-in-proc.domain.net_4061"
}
[2]=> array(3) {
    ["condition"]=> string(9) "Ends With"
    ["uri"]=> string(20) "/Acknowledgement"
    ["pool"]=> string(50) "/Common/gateway-test-in-proc.domain.net_4011"
}

以下是填充数组中一行“数据”的Symfony / PHP代码行。该行位于循环内,将在数组中创建多行。

$twigdata[]=array('condition'=>$condition,'uri'=>$uri,'pool'=>$pool);

这是我想要渲染值的正文中的Twig代码片段。如果我执行print_r或vardump,我会看到数组内容很好。

                {% for rulerecord in rulerecords %}
                <tr class="detailRowClass">
                    <td class="conditionClass">{{ rulerecord.condition }}</td>
                    <td class="URIclass">{{ rulerecord.uri }}</td>
                    <td class="poolClass">{{ rulerecord.pool }}</td>
                </tr>
            {% endfor %}

Q值。为什么我只看到一个空白的浏览器页面?我错过了什么?

2 个答案:

答案 0 :(得分:1)

一个。我找到了我的愚蠢错误的答案。 Twig代码很好。我错过了&#34;返回&#34;指示。这是呈现Twig的函数中的更正行:

返回$ this-&gt;渲染(&#39; netsecBundle:DataPower:datapower.html.twig&#39;,数组(&#39; rulerecords&#39; =&gt; $ twigdata));

答案 1 :(得分:0)

您是否检查过以确保在您的控制器中传递的变量名称$ twigdata被称为rulerecords?如果不更改for循环中的变量以匹配放入视图的控制器变量。

例如,尝试更改此内容:

$this->render('template_path', array('some_var' => $twigdata));

对此:

$this->render('template_path', array('rulerecords' => $twigdata));