0

これは、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;
      }
   }
}

ビューのテーブルにオブジェクトごとに独自の行を持たせようとしています。私は表示用にこのコードを持っています:

<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行に持っています。アイテムに割り当てることができるリストを作成するにはどうすればよいですか?

4

1 に答える 1

2

次の方法:

(array) AkceHnedModelActions::getItems()

アイテムのリストのみを返すはずのオブジェクト全体を返します。$this の代わりに $this->items を返すべきだと思います。

現在のコードでは、 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()
{
于 2013-10-07T14:33:48.020 に答える