这是我的扩展JModelList的类:
class AkceHnedModelActions extends JModelList
{
public function getItems()
{
$url = '...';
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => TRUE
));
// aby me https fungovalo na localhostu, na serveru potom odstranit
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// Send the request
$getResponse = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($getResponse == FALSE){
die(curl_error($ch));
}
else
{
$results = array();
$jsonObject = json_decode($getResponse, true);
foreach ($jsonObject AS $key => $value) {
$obj = new Action($value);
$results[] = $obj;
}
$this->items = $results;
}
return $this;
}
}
class Action
{
function __construct(array $data) {
foreach($data as $key => $val) {
$this->{$key} = $val;
}
}
}
我正在尝试为View中的每个对象拥有自己的行。我有这个代码用于查看:
<table>
<tbody>
<?php foreach ($this->items as $i => $item): ?>
<tr class="row"><td><?php echo $item->id ?></td>
<td><?php print_r($item) ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
我无法让它发挥作用。我把所有数组都排成一行。如何创建可以分配给项目的列表?
答案 0 :(得分:2)
以下方法:
(array) AkceHnedModelActions::getItems()
返回整个对象,它应该只返回一个项目列表。 我相信它应该返回$ this-&gt;项而不是$ this。
使用当前代码,您的JView :: display()可能会分配对整个对象的引用:
$items = $this->get('Items'); // (object) AkceHnedModelActions
$this->assignRef('items', $items);
并在default.php模板中迭代对象的公共属性而不是列表数组的元素。
foreach ($this->items as $i => $item)
值得检查$ i键是否为“项目”......这只会证实我的理论......
编辑:JModelItem类的一个片段:
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*
* @since 11.1
*/
public function getItems()
{