Let me explain a bit so that it will be clear about
1. what I am trying to do
2. where I am doing wrong and
3. where I need to fill up the missing pieces.


My front page is where all the records are shown so I wanted to use
the paginator. For the simplicity I want to fetch all the records from
database and paginate.

My concept of doing that:
====================
1. IndexController will delegate the work to Model (which have access
to DBTable)
2. Model instantiates the Paginator and returns to controller
3. Controller then assign the paginator to view.
4. View will loop through the probided paginator to render the records
plus show paginator control.
====================

Now some code

My controller:
==============
    public function indexAction()
    {
                    $this->showAllEntries();
    }


    private function showAllEntries()
    {
        $newsmodel = $this->_getNewsModel();
        $this->view->paginator = $newsmodel->fetchAllEntries();
    }

=============

My Model:
==============
    public function fetchAllEntries()
    {
        $table = $this->getTable();
        $select = $table->select()->order('newsdate desc');
        $pgadapter = new Zend_Paginator_Adapter_DbTableSelect($select);
        $paginator = new Zend_Paginator($pgadapter);
        $paginator->setItemCountPerPage(5);
        //$paginator->setCurrentPageNumber(1); //should be dynamic I guess
        return $paginator;
    }

    public function getTable()
    {
        if (null === $this->_table) {
            require_once APPLICATION_PATH . '/models/DbTable/NewsTable.php';
            $this->_table = new Model_DbTable_NewsTable;
        }
        return $this->_table;
    }

====================

My index view script and paginator control script is in the same directory
===================
views
  scripts
    index
      index.phtml
      mypaginator.phtml
==================


My view script (index.phtml)
======================
    <div id="newslist">
        <? if ($this->paginator ): ?>
            <? foreach ($this->paginator as $entry): ?>
                <div id="ads">
                    <ul>
                        <li id="adtitle"><?=
$this->escape($entry['newstitle']) ?></li>
                        <li id="addetails"><?=
$this->escape($entry['newsdetails']) ?></li>
                    </ul>
                </div>
            <? endforeach ?>
        <? endif ?>
    </div>

    <div id="pgcontrol">
        <?= $this->paginationControl($this->paginator, 'Sliding',
'index/mypaginator.phtml'); ?> //<<<<<<<<<<please take note of this if
this is ok
    </div>
====================

my Paginator script (same as provided in documentation search style)
=======================

<!--
See http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination
-->

<?php if ($this->pageCount): ?>
<div class="paginationControl">
<!-- Previous page link -->
<?php if (isset($this->previous)): ?>
  <a href="<?= $this->url(array('page' => $this->previous)); ?>">
    &lt; Previous
  </a> |
<?php else: ?>
  <span class="disabled">&lt; Previous</span> |
<?php endif; ?>

<!-- Numbered page links -->
<?php foreach ($this->pagesInRange as $page): ?>
  <?php if ($page != $this->current): ?>
    <a href="<?= $this->url(array('page' => $page)); ?>">
        <?= $page; ?>
    </a> |
  <?php else: ?>
    <?= $page; ?> |
  <?php endif; ?>
<?php endforeach; ?>

<!-- Next page link -->
<?php if (isset($this->next)): ?>
  <a href="<?= $this->url(array('page' => $this->next)); ?>">
    Next &gt;
  </a>
<?php else: ?>
  <span class="disabled">Next &gt;</span>
<?php endif; ?>
</div>
<?php endif; ?>
=============================


When I open the site, it shows the first five entries together with
paginator control. However when I click next, my url get changed from
http://myweb/ to http://myweb/index/index/page/2 and doesn't go to
next five records. (why there is two index in my url?)

I know now that I need some kind to routing here. So my question is
how to do that with my current setting?


My bootstrap.php
=================

previously
----------------------------------
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory(APPLICATION_PATH . '/controllers');
$frontController->setParam('env', APPLICATION_ENVIRONMENT);

now I added but not sure it this should be here. anyway this is not working
----------------------------------
$router = $frontController->getRouter();
$router->addRoute('index', new Zend_Controller_Router_Route('index/index/:page',
                                array('module' => 'index', 'page' => 1,
                                      'Controller' => 'index',
                                      'Action' => 'index')));
=======================================

I am lost here. What else I need to know to get this thing done?

Please look at what I have provided and guide me on filling the missing part.

thanks


-- 
=======================
Registered Linux User #460714
Currently Using Fedora 8, 10
=======================

Reply via email to