Zend Paginator+Table Gateway: error


Zend Paginator+Table Gateway: error

错误:paginator的元素是对象(不是数组)。var_dump($records):

object(Records'Model'Records)#240 (11) { ["id"]=> NULL ["name"]=> string(9) "5453gdfgd" ["email"]=> string(16) "igor@bk.ru" ["homepage"]=> string(0) "" ["text"]=> string(5) "ghjkj" ["image"]=> string(5) "Array" ["file"]=> string(0) "" ["ip"]=> NULL ["browser"]=> NULL ["date"]=> string(19) "2013-03-05 23:24:49" ["inputFilter":protected]=> NULL }  
object(Records'Model'Records)#241 (11) { ["id"]=> NULL ["name"]=> string(9) "5453gdfgd" ["email"]=> string(16) "igor@bk.ru" ["homepage"]=> string(0) "" ["text"]=> string(5) "ghjkj" ["image"]=> string(5) "Array" ["file"]=> string(0) "" ["ip"]=> NULL ["browser"]=> NULL ["date"]=> string(19) "2013-03-05 23:23:37" ["inputFilter":protected]=> NULL }

控制器:

    protected $recordsTable;
        public function indexAction()
        {
            $field = (string) $this->params()->fromRoute('field', 'date');
            $order = (string) $this->params()->fromRoute('order', 'desc');
            $array = $this->getRecordsTable()->fetchAll($field, $order);
            $paginator = new Paginator'Paginator(new Paginator'Adapter'Iterator($array));
            $paginator->setCurrentPageNumber($this->params()->fromRoute('page', 1));
            $paginator->setItemCountPerPage(2);
            //print_r($paginator);
            $vm = new ViewModel(array('records' => $paginator));
            return $vm;
        }
    public function getRecordsTable()
        {
            if (!$this->recordsTable) {
                $sm = $this->getServiceLocator();
                $this->recordsTable = $sm->get('Records'Model'RecordsTable');
            }
            return $this->recordsTable;
        } 

RecordsTable:

    protected $tableGateway;
        public function __construct(TableGateway $tableGateway)
        {
            $this->tableGateway = $tableGateway;
        }
        public function fetchAll($field, $order)
        {
            $this->field = $field;
            $this->order = $order;
            $resultSet = $this->tableGateway->select(function (Select $select) {
            $select->columns(array('date', 'name', 'email', 'homepage', 'text', 'image', 'file'));
            $select->order($this->field.' '.$this->order);        
            });
            $resultSet->buffer();
            $resultSet->next();
            return $resultSet;
        }
在视图:

 foreach($records as $record) : ?>
     <?php var_dump($record); ?> <br />
 <?php endforeach; ?>

我做错了什么?我怎么把$records做成数组呢?

提前感谢!

使用toArray方法从结果集中返回一个数组…

public function fetchAll($field, $order)
{
     // ...
     return $resultSet->toArray();
}

或者在您的视图中,在foreach

中使用toArray方法
<?php foreach($records->toArray() as $record) : ?>
    <?php var_dump($record); ?> <br />
<?php endforeach;