Symfony2 / Twig - 输出数据数组

时间:2015-03-10 22:31:55

标签: symfony twig

我想知道做某事的最佳方法。我的控制器调用服务的功能。这个函数获取了一些DOMDocument的东西,我不想把这整个响应传递给twig。所以我做的就是这个

public function terminalService($terminal_command)
{
    $dom = new \DOMDocument('1.0', 'UTF-8');
    $responseData = $this->commandsService->executeSingleCommand($terminal_command);
    $dom->loadXML($responseData);

    $elements = $dom->getElementsByTagNameNS('http://www.test.com/ter_0', 'Text');

    $elNum = 0;
    $flightInfo = array();

    while ( $elNum < $elements->length ) {
        $flightInfo[] = $elements->item($elNum)->nodeValue;
        ++$elNum;
    }

    return $flightInfo;
}

因此,获取DOMDocument,查找具有Text命名空间的所有元素并将它们放入数组元素中。然后我的控制器接收该数组,然后将其传递给视图

$commandData = $apiService->terminalService($terminal_command);

return $this->render('NickAlertBundle:Page:terminal.html.twig', array(
     'data' => $commandData,
));

如何在新行上显示数组的每个元素?在我看来,我目前正在做

<div class="col-md-8" id="terminal-window">
    {% if data is defined %}
        {% for d in data %}
            {{ d|nl2br }}
        {% endfor %}
    {% endif %}
</div>

然而,所有这一切都在一个长字符串中显示所有内容。很有趣,如果我转储数据它显示它我想要的(但我显然不能在生产中这样做)。那么如何在各自的行上显示每个数组元素呢?

更新 转储显示我希望它显示的数据,例如

6 => "3*A$NZ9835 C4 D4 J4 Z4 B7 H7 M7 Y7 LHRLAX 1035 1350   *  777 0E"
7 => "           Q7 T7 V7 W7 G7 K7 L7 S7 "

因此,您可以看到第7行显示的空格很多,以便正确格式化输出。如果我只是在输出的末尾放置一个中断,它会显示如此

7 #AY4014 F9 A9 P9 J9 C9 D9 I9 Y9 LHRLAX 1215 1530 * 77W 0E
B9 H9 K9 M9 L9 V9 S9 N9 Q9 O9 G9 

有没有办法保留空格或复制转储的内容?

由于

1 个答案:

答案 0 :(得分:2)

由于您拥有大部分逻辑集,我会将for循环更改为:

<div class="col-md-8" id="terminal-window">
    {% if data is defined %}
        {% for d in data %}
            <pre>{{ d }}</pre><br />
        {% endfor %}
    {% endif %}
</div>