Symfony2/Twig - 输出数据数组
Symfony2/Twig - Outputting an array of data
我想知道做某事的最佳方法。我的控制器调用服务的函数。此函数获取一些 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
有什么方法可以保留空格或复制转储的功能吗?
谢谢
由于您已经设置了大部分逻辑,我会将 for 循环更改为:
<div class="col-md-8" id="terminal-window">
{% if data is defined %}
{% for d in data %}
<pre>{{ d }}</pre><br />
{% endfor %}
{% endif %}
</div>
我想知道做某事的最佳方法。我的控制器调用服务的函数。此函数获取一些 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
有什么方法可以保留空格或复制转储的功能吗?
谢谢
由于您已经设置了大部分逻辑,我会将 for 循环更改为:
<div class="col-md-8" id="terminal-window">
{% if data is defined %}
{% for d in data %}
<pre>{{ d }}</pre><br />
{% endfor %}
{% endif %}
</div>