0

我在我的示例应用程序中实现 DAO 模式,我有一个包含从 UserMapper 获取的用户(域)的普通数组这样做是因为它违背了 DAO 的目的。

下面的示例代码(不工作)

    $userMapper = new Application_Model_UserMapper();
    $users = $userMapper->getUsers();
    $paginator = Zend_Paginator::factory($users);
    $paginator->setCurrentPageNumber($this->_getParam('page'));
    $paginator->setItemCountPerPage(1);
    $this->view->paginator = $paginator;

下面的示例代码(工作)

    $users = new Application_Model_DbTable_User();
    $select = $users->fetchAll();
    $paginator = Zend_Paginator::factory($select);
    $paginator->setCurrentPageNumber($this->_getParam('page'));
    $paginator->setItemCountPerPage(1);
    $this->view->paginator = $paginator;
4

2 回答 2

1

我在看工厂方法,它需要 3 个参数

public static function factory($data, $adapter = self::INTERNAL_ADAPTER,
                               array $prefixPaths = null)

你可能想试试

$paginator = Zend_Paginator::factory($users, 'Array');

至少这样,如果您的数据不正确,您应该引发异常。

于 2012-01-21T11:12:42.963 回答
0

我已经解决了我的问题,为了让包含普通 PHP 对象的数组被 partialLoop 识别,您需要在该类中实现一个 toArray() 方法并返回属性的键值对

  class Application_Model_User
  {
  private $id;
  private $first_name;
  private $last_name;
  private $middle_name;

  public function toArray()
  {
   return get_object_vars($this);
  }
  }
于 2012-01-21T16:52:44.060 回答