Zend framework Zend-如何在同一视图中组合表单和分页
这可能比看起来更简单,但我被难倒了。我有一个简单的控制器,它构建了一个用于输入参数的小表单。提交表单时,同一页面将被重新绘制,顶部为同一表单,但下方为结果分页视图。我的控制器在这里:Zend framework Zend-如何在同一视图中组合表单和分页,zend-framework,pagination,Zend Framework,Pagination,这可能比看起来更简单,但我被难倒了。我有一个简单的控制器,它构建了一个用于输入参数的小表单。提交表单时,同一页面将被重新绘制,顶部为同一表单,但下方为结果分页视图。我的控制器在这里: public function indexAction() { $form = new Application_Form_Battery(); $request = $this->getRequest(); if ($request->isPost()) { $
public function indexAction()
{
$form = new Application_Form_Battery();
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->populate($data);
// get the data
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
$reportsTBL = new Model_DBTable_Reports();
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($reportsTBL->getBatteryLog($data)));
$paginator->setCurrentPageNumber($this->_getParam('page',1))
->setItemCountPerPage(50);
$this->view->paginator = $paginator;
}
$this->view->form = $form;
}
如您所见,表单提交后,分页结果将被view->form语句覆盖。。。提交表单后如何合并它们?我不能有两个视图调用 这里有些东西没有经过测试 indexController
public function indexAction()
{
.....
$_category = new Admin_Model_DbTable_Category();
$category = $_category->browse($browseArray);
$this->view->vCount = count($category);
$paginator = Zend_Paginator::factory($category);
$page = ($postData['page'] > 0) ? $postData['page'] : 1;
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(10);
$paginator->setPageRange(5);
$this->view->categoryList = $paginator; // print_obj($paginator);
....
}
index.phtml
.....
<ul>
<?php if (count($this->categoryList) != 0) { ?>
<?php
foreach ($this->categoryList AS $key => $category) {
?>
<li>
<div >
<?php echo $category['name'] ?>
</div>
</li>
<?php } ?>
<li>
<div><?php echo "Total Category(" . $this->vCount . ")"; ?></div>
<div style="text-align:center;"><?php echo $this->paginationControl($this->categoryList, 'Sliding', 'pagination.phtml'); ?></div>
</li>
<?php } else { ?>
<li><div style="text-align:center;">No records found</div></li>
<?php } ?>
</ul>
...
您可以使用名为browse的通用函数,该函数将从表中获取结果,通过使用结果,我们可以在页面呈现时对数据进行分页。我解决了这个问题。我使用了一个称为表单模板的视图,并试图在该表单上显示分页结果。我将分页结果移动到实际的视图脚本,所有问题都解决了
谢谢你的帮助。我觉得很好。您所说的“提交表单后如何合并它们”是什么意思。顺便说一句:我可能会使用
GET
方法而不是POST
提交表单:没有刷新问题、url可寻址结果页等。要清楚,我在控制器中转储paginator,并看到三条记录。我在视图中转储$this->paginator,它是空的。我有超过2800万行。无法检索所有数据。:)
class Admin_Model_DbTable_Category extends Zend_Db_Table_Abstract
{
...
protected $_name = 'category';
protected $_primary = 'category_id';
public function browse($browseArray = array())
{
extract($browseArray);
$whereSQL = ' `parent` = 0 ';
if($category_id)
$whereSQL .= ' AND `category_id` = "'. $category_id .'"';
if($catname)
$whereSQL .= ' AND `name` = "'. $catname .'"';
if($name)
$whereSQL .= ' AND `name` LIKE "%'. $name .'%"';
if($description)
$whereSQL .= ' AND `description` LIKE "%'. $description .'%"';
if($status)
$whereSQL .= ' AND `status` = "'. $status .'"';
$select = $this->_db->select()
->from($this->_name)
->where($whereSQL);
$result = $this->getAdapter()->fetchAll($select);
return $result;
}
....
}