使用Webservices,我收到以下格式的回复:
Array
(
[Data] => Array
(
[A] => Array
(
[B] => Array
(
[0] => Array
(
[C] => Array
(
[value] => some value1
)
[D] => Array
(
[value] => some value2
)
[E] => some value3
)
[1] => Array
(
[C] => Array
(
[value] => some value4
)
[D] => Array
(
[value] => some value5
)
[E] => 5
)
)
[value] =>
使用magento作为PHP框架,我创建了一个显示以下信息的控制器
public function bynumberAction(){
$t = new 'RocketShipIt'Track('fedex');
$response = $t->track('770190256519');
// parse results
$events['C'] = $response['A']['B']['C'];
$events['D'] = $response['A']['B']['D']
$events['E'] = $response['A']['B']['E']
// serve results
$this->loadLayout( array('default','shipping_track_bynumber'));
$this->_initLayoutMessages('customer/session');
$this->getLayout()->getBlock('track_bynumber')
->setCollection($events)
->setTemplate('shipping/track/bynumber.phtml');
$this->renderLayout();
}
在前端phtml (bynumber.phtml)文件中我放入:
<?php $res = $this->getCollection() ?>
<?php foreach ($res as $row) {echo $row['C'] . ' ' . $row['D'] . ' ' . $row['E'] . '<br />';} ?>
显示无信息。感谢任何帮助。brgds
还有更多问题。首先,在函数bynumberAction
的第6行和第7行命令后面有一个语法错误——缺少分号。
第二:为什么你有不同的数组结构在你的控制器,如果你知道如何响应?
你使用:$response['A']['B']['C'];
响应看起来:$response['Data']['A']['B']['0']['C'];
在你的控制器中试试:
$events = array()
foreach ($response['Data']['A']['B'] as $data)
{
$events[] = $data;
}
…在模板中:
foreach ($res as $row) { echo $row['C']['value'] ... }
乍一看你漏掉了一个深度:
代替$events['C'] = $response['A']['B']['C'];
,你应该有$events['C'] = $response['A']['B'][0]['C'];
或$events['C'] = $response['A']['B'][1]['C'];
或做一个循环,取决于你想要什么。