我想知道做某事的最佳方法。我的控制器调用服务的功能。这个函数获取了一些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
有没有办法保留空格或复制转储的内容?
由于
答案 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>