2010-08-24 102 views
0

我在一个小项目中使用Zend框架之外的一些Zend库。 我使用的是Zend_DbZend_Paginator,但是当我尝试使用Zend_Paginator_Adapter_DbTableSelect设置分页时,出现无法找到该类的错误。zend框架组件数据库无法找到类Zend_Paginator_Adapter_DbTableSelect

Fatal error: Class 'Zend_Paginator_Adapter_DbTableSelect' not found in C:\xampp\htdocs\php_testing\zend\zend_db\index1.php on line 65 Here is my code:

<? 
require_once 'Zend/Db.php'; 
$config=array(
    'adapter' => 'PDO_MYSQL', 
    'hostname' => 'localhost', 
    'dbname' => 'dm_xxxx', 
    'username' => 'un', 
    'password' => 'pw' 

); 
$db=Zend_Db::factory($config['adapter'], $config); 
$select=$db->select() 
     ->from('photocontest__photos', array('*')) 
     ->order('created') 
     ;  
require_once 'Zend/Paginator.php'; 
$currentPageNumber = ($_GET['page'] > 0)?$_GET['page']:'1'; 
$totalNumberOfItems = 11; 
$itemsPerPage = 5; 
$pageRange = 10; 

$adapter = new Zend_Paginator_Adapter_DbTableSelect($select); 
$paginator = new Zend_Paginator($adapter); 
$paginator->setCurrentPageNumber($currentPageNumber); 
$paginator->setItemCountPerPage($itemsPerPage); 
$scrollType = 'Sliding'; 
$paginator = get_object_vars($paginator->getPages($scrollType)); 

foreach($paginator AS $item){ 
    echo $item->title.'<br>'; 
} 
?> 

感谢

######### UPDATE EDIT ##########

<? 
$config=array(
    'adapter' => 'PDO_MYSQL', 
    'hostname' => 'localhost', 
    'dbname' => 'dm_xxxx', 
    'username' => 'un', 
    'password' => 'pw' 

); 
require_once 'Zend/Loader.php'; 
Zend_Loader::registerAutoload(); 
$db=Zend_Db::factory($config['adapter'], $config); 
$table = new Photos(array('db' => $db)); 
$select = $table->select(); 
$select->setIntegrityCheck(false) 
     ->from('photocontest__photos', array('*')) 
     ->order('created') 
     ;  

$currentPageNumber = ($_GET['page'] > 0)?$_GET['page']:'1'; 
$itemsPerPage = 6; 
$adapter = new Zend_Paginator_Adapter_DbTableSelect($select); //Setup the adapter object 
$paginator = new Zend_Paginator($adapter); //Setup the actual paginator object 

$paginator->setCurrentPageNumber($currentPageNumber); 
$paginator->setItemCountPerPage($itemsPerPage); // items pre page 

$scrollType = 'Sliding'; //change this to 'All', 'Elastic', 'Sliding' or 'Jumping' to test all scrolling types 

Zend_Paginator::setDefaultScrollingStyle('Sliding'); // Sliding or Elastic 
//Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml'); 

$paginatorControl = get_object_vars($paginator->getPages($scrollType)); //and that's it! we can now use the $paginator variable as we want 
?> 
<h1>Zend_Paginator Demo</h1> 
<ul id="items"> 
    <?php foreach($paginator AS $item): ?> 
     <li><?php echo $item->title; ?></li> 
    <?php endforeach ?> 
</ul> 

<div id="paginator"> 
    <p>Showing <strong><?php echo $paginatorControl['firstItemNumber'] ?> to <?php echo $paginatorControl['lastItemNumber'] ?></strong> out of <strong><?php echo $paginatorControl['totalItemCount'] ?></strong> items</p> 

    <?php if($paginatorControl['previous']): ?> 
     <a href="?page=<?php echo $paginatorControl['previous'] ?>">&laquo; Prev</a> 
    <?php else: ?> 
     <span>&laquo; Prev</span> 
    <?php endif ?> 

    <?php if($paginatorControl['firstPageInRange'] > $paginatorControl['first']): ?> 
     <a href="?page=<?php echo $paginatorControl['first'] ?>"><?php echo $paginatorControl['first'] ?></a> 
     <span>...</span> 
    <?php endif ?> 

    <?php foreach($paginatorControl['pagesInRange'] as $page): ?> 
     <?php if($page == $paginatorControl['current']): ?> 
      <span><?php echo $page ?></span> 
     <?php else: ?> 
      <a href="?page=<?php echo $page ?>"><?php echo $page ?></a> 
     <?php endif ?> 
    <?php endforeach ?> 

    <?php if($paginatorControl['lastPageInRange'] < $paginatorControl['last']): ?> 
     <span>...</span> 
     <a href="?page=<?php echo $paginatorControl['last'] ?>"><?php echo $paginatorControl['last'] ?></a> 
    <?php endif ?> 

    <?php if($paginatorControl['next']): ?> 
     <a href="?page=<?php echo $paginatorControl['next'] ?>">Next &raquo;</a> 
    <?php else: ?> 
     <span>Next &raquo;</span> 
    <?php endif ?> 
</div> 

回答

0
<? 
$config=array(
    'adapter' => 'PDO_MYSQL', 
    'hostname' => 'localhost', 
    'dbname' => 'dm_xxxx', 
    'username' => 'un', 
    'password' => 'pw' 

); 
require_once 'Zend/Loader.php'; 
Zend_Loader::registerAutoload(); 
$db=Zend_Db::factory($config['adapter'], $config); 
$table = new Photos(array('db' => $db)); 
$select = $table->select(); 
$select->setIntegrityCheck(false) 
     ->from('photocontest__photos', array('*')) 
     ->order('created') 
     ;  

$currentPageNumber = ($_GET['page'] > 0)?$_GET['page']:'1'; 
$itemsPerPage = 6; 
$adapter = new Zend_Paginator_Adapter_DbTableSelect($select); //Setup the adapter object 
$paginator = new Zend_Paginator($adapter); //Setup the actual paginator object 

$paginator->setCurrentPageNumber($currentPageNumber); 
$paginator->setItemCountPerPage($itemsPerPage); // items pre page 

$scrollType = 'Sliding'; //change this to 'All', 'Elastic', 'Sliding' or 'Jumping' to test all scrolling types 

Zend_Paginator::setDefaultScrollingStyle('Sliding'); // Sliding or Elastic 
//Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml'); 

$paginatorControl = get_object_vars($paginator->getPages($scrollType)); //and that's it! we can now use the $paginator variable as we want 
?> 
<h1>Zend_Paginator Demo</h1> 
<ul id="items"> 
    <?php foreach($paginator AS $item): ?> 
     <li><?php echo $item->title; ?></li> 
    <?php endforeach ?> 
</ul> 

<div id="paginator"> 
    <p>Showing <strong><?php echo $paginatorControl['firstItemNumber'] ?> to <?php echo $paginatorControl['lastItemNumber'] ?></strong> out of <strong><?php echo $paginatorControl['totalItemCount'] ?></strong> items</p> 

    <?php if($paginatorControl['previous']): ?> 
     <a href="?page=<?php echo $paginatorControl['previous'] ?>">&laquo; Prev</a> 
    <?php else: ?> 
     <span>&laquo; Prev</span> 
    <?php endif ?> 

    <?php if($paginatorControl['firstPageInRange'] > $paginatorControl['first']): ?> 
     <a href="?page=<?php echo $paginatorControl['first'] ?>"><?php echo $paginatorControl['first'] ?></a> 
     <span>...</span> 
    <?php endif ?> 

    <?php foreach($paginatorControl['pagesInRange'] as $page): ?> 
     <?php if($page == $paginatorControl['current']): ?> 
      <span><?php echo $page ?></span> 
     <?php else: ?> 
      <a href="?page=<?php echo $page ?>"><?php echo $page ?></a> 
     <?php endif ?> 
    <?php endforeach ?> 

    <?php if($paginatorControl['lastPageInRange'] < $paginatorControl['last']): ?> 
     <span>...</span> 
     <a href="?page=<?php echo $paginatorControl['last'] ?>"><?php echo $paginatorControl['last'] ?></a> 
    <?php endif ?> 

    <?php if($paginatorControl['next']): ?> 
     <a href="?page=<?php echo $paginatorControl['next'] ?>">Next &raquo;</a> 
    <?php else: ?> 
     <span>Next &raquo;</span> 
    <?php endif ?> 
</div> 
0

编辑:我不认为我的第一个解决方案将帮助你,除非你没有Zend_Paginator_Adapter_DbTableSelect。但看看你的代码,你试过包括直接DbTableSelect.php?

尝试使用:: factory。

$paginator = Zend_Paginator::factory($adapter); 


$paginator->setCurrentPageNumber($currentPageNumber); 
$paginator->setItemCountPerPage($itemsPerPage); 
$scrollType = 'Sliding'; 
$paginator = get_object_vars($paginator->getPages($scrollType)); 
+0

我包括它,现在我得到一个不同的错误: 致命错误:未捕获的异常 'Zend_Db_Select_Exception' 与消息 '无法识别的方法 'getTable()'' 在C:\ XAMPP \ PHP \ dev的\ include \ ZendFramework-1.9.6 \ library \ Zend \ Db \ Select.php:1320堆栈跟踪:#0 [内部函数]:Zend_Db_Select - > __ call('getTable',Array)#1 C:\ xampp \ php \ dev \ include \ ZendFramework-1.9.6 \ library \ Zend \ Paginator \ Adapter \ DbTableSelect.php(46):Zend_Db_Select-> getTable()#2 C:\ xampp \ php \ dev \ include \ ZendFramework-1.9.6 \ library \ Zend \ Paginator.php(750):Zend_Paginator_Adapter_DbTableSelect- ....等等...... – EricP 2010-08-24 18:17:21

+1

Zend使用自动加载器加载它的所有类,看起来你没有设置使用它。所以我想你必须手动包含每个文件。你可以用这个新的信息发布一个新的问题,并获得更准确的帮助 – Iznogood 2010-08-24 18:28:28

+0

我想我现在可以通过添加: require_once('Zend/Loader.php'); Zend_Loader :: registerAutoload(); 我仍然得到错误:致命错误:未知的异常'Zend_Db_Select_Exception'带有消息'无法识别的方法'getTable()'' 我认为这与不调用我的表名,就像当我在采埃孚是这样的: $ photoTable = new Photo_Model_Photos(); $ select = $ photoTable-> select(); – EricP 2010-08-24 20:02:28