我已经按照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
?
答案 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 希望它有所帮助