2012-10-02 3 views
0

이것은 아마 더 단순 해 보이지만 나는 혼란 스럽습니다. 매개 변수 입력을위한 작은 형식을 만드는 간단한 컨트롤러가 있습니다. 양식이 제출되면 동일한 양식이 맨 위에 동일한 양식으로 다시 그려지고 그 아래에 결과의 페이지가 매겨진보기가 표시됩니다. 내 컨트롤러는 여기에 있습니다 : 당신이 볼 수 있듯이 양식이 제출 한 후Zend - 같은보기에서 양식과 페이지 매김을 결합하는 방법

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; 
} 

는 페이지가 매겨진 결과는 내가 제출 양식 후에 결합 할 수 있습니다 방법보기 -> 형태로 문 ... 덮어 씁니다? 여기 검증되지 않은 같은 두 개의보기 통화 ...

+0

나에게 잘 어울립니다. "양식 제출 후 어떻게 결합 할 수 있습니까?"라는 의미는 무엇입니까? 제쳐두고 : 나는 POST 대신'GET' 메소드를 사용하여 폼을 제출할 것입니다 : 새로 고침 문제, URL 주소 결과 페이지 등 –

+0

분명히하기 위해 컨트롤러에 페이지 매김기를 덤프하고 3 개의 레코드를 봅니다. . 내보기에 $ this-> paginator를 덤프하고 비어 있습니다. –

답변

0

해결했습니다. 양식 서식 파일을 호출 한보기를 사용하고 그 양식에 페이지 매김 결과를 표시하려고했습니다. 페이지 이동 결과를 실제보기 스크립트로 이동하고 모든 것이 해결되었습니다.

도움 주셔서 감사합니다.

1

어떤 것,

인 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> 
... 

카테고리를 가질 수 없습니다. PHP

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; 
    } 
    .... 
} 

페이지가 렌더링 될 때 데이터에 페이지 매김을 할 수있는 결과를 사용하여 browse이라는 일반적인 함수를 사용할 수 있습니다.

+0

2 천 8 백만 행이 넘습니다. 모든 데이터를 검색하지 않습니다. :) –

관련 문제