0

これはおそらくもっと簡単に思えますが、私は困惑しています。私は、パラメーターを入力するための小さなフォームを作成する単純なコントローラーを持っています。フォームが送信されると、同じページが再描画され、上部に同じフォームが表示されますが、その下に結果がページ分割されて表示されます。私のコントローラーはここにあります:

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ステートメントによって上書きされます...フォーム送信後にそれらを組み合わせるにはどうすればよいですか?ビューコールを2回行うことはできません...

4

2 に答える 2

1

ここでテストされていないようなもの、

インデックスコントローラー

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

table から結果をフェッチするbrowseという名前の一般的な関数を使用できます。結果を使用して、ページのレンダリング時にデータをページ分割できます。

于 2012-10-02T05:51:27.100 に答える