Joomla - 填充JModelList(将对象添加到项目)

时间:2013-10-04 08:47:05

标签: php templates joomla joomla2.5

这是我的扩展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>

我无法让它发挥作用。我把所有数组都排成一行。如何创建可以分配给项目的列表?

1 个答案:

答案 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()
{