zend分页url格式

时间:2011-11-26 15:08:47

标签: zend-framework zend-route zend-paginator

我已经按照http://framework.zend.com/manual/en/zend.paginator.usage.html

的分页教程进行了操作

我已成功为我的网站实施分页,但我对分页的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 个答案:

答案 0 :(得分:4)

我觉得以前的答案还不够,我会给我的。首先,您可以在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',网址将以这种方式打印:

/CONTROLLER-NAME/page/5

对于'paginator2',网址将以这种方式打印:

/CONTROLLER-NAME/5

显然,您看到CONTROLLER-NAME将是您编写的控制器的名称。

答案 1 :(得分:0)

你可以这样做: 在你的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 希望它有所帮助