формат URL Zend Pagination - PullRequest
       19

формат URL Zend Pagination

0 голосов
/ 26 ноября 2011

Я следовал руководству по нумерации страниц из http://framework.zend.com/manual/en/zend.paginator.usage.html

Я успешно реализовал нумерацию страниц для своего сайта, но меня не устраивает вывод URL-адресов для подкачки.пример URL для страницы 2:

http://www.example.com/posts/index/page/2

Я хотел бы удалить index и просто включить http://www.example.com/posts/page/2

Почему включен indexпри доступе к this->url (в my_pagination_control.phtml из учебника по ссылке)?

Есть ли способ изящно просто показать posts/page/2?или даже просто posts/2?

Ответы [ 2 ]

4 голосов
/ 26 ноября 2011

Мне кажется, что предыдущего ответа недостаточно, я дам свой. Прежде всего, вы можете добавить в свой bootstrap.php маршрутизатор, который будет выглядеть так:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
   protected function _initRoutes()
   {
      $Router = Zend_Controller_Front::getInstance()->getRouter();

      $Route = new Zend_Controller_Router_Route(
                      ':controller/*',
                      array(
                          'controller' => 'index',
                          'action' => 'index'
                      )
      );
      $Router->addRoute('paginator1', $Route);

      $Route = new Zend_Controller_Router_Route(
                      ':controller/:page/*',
                      array(
                          'controller' => 'index',
                          'action' => 'index',
                      ),
                      array(
                          'page' => '[0-9]+'
                      )
      );
      $Router->addRoute('paginator2', $Route);
   }

}

, а затем используйте в вашем представлении эту простую строку:

echo $this->url(array('controller' => 'CONTROLLER-NAME', 'page' => 5), 'paginator1', TRUE);
echo $this->url(array('controller' => 'CONTROLLER-NAME', 'page' => 5), 'paginator2', TRUE);

В случае 'paginator1', URL будет напечатан следующим образом:

/CONTROLLER-NAME/page/5

В случае 'paginator2', URL будет напечатан следующим образом:

/CONTROLLER-NAME/5

Очевидно, что там, где вы видите, CONTROLLER-NAME будет названием контроллера, который вы пишете.

0 голосов
/ 26 ноября 2011

Вы можете сделать: в вашем htaccess файле

RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]

Ссылка для справки: http://framework.zend.com/manual/en/zend.controller.router.html Надеюсь, это поможет

...