Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1536489
  • 博文数量: 194
  • 博客积分: 6450
  • 博客等级: 准将
  • 技术积分: 2085
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-06 13:39
文章分类

全部博文(194)

文章存档

2013年(38)

2012年(11)

2011年(1)

2010年(1)

2009年(4)

2008年(13)

2007年(18)

2006年(63)

2005年(45)

我的朋友

分类:

2006-12-04 16:41:53

在使用ZF中,是通过URL来确定使用的控制器和动作,如:/blog/view/bid/1这样的URL,如果参数多的话,应该是非常难看的。而且暴露了一些东西,反正我是不喜欢看到这样的URL的。不过幸运的是,ZF提供RewriteRouter类,通过这个我们可以写出自己喜欢的URL,而且非常灵活。
这一切都只要在index.php里添加几句代码就可以实现,也就是那个入口文件。

首先创建一个RewriteRouter实例
$router = new Zend_Controller_RewriteRouter()

然后设置路由的基本路径,这一步是必须的。
$router->setRewriteBase('/')

开始了,最核心的地方添加路由

$router->addRoute($name,Zend_Controller_Router_Route_Interface $route);

第一个参数$name是路由表的参数,由保持路由表的唯一性。重名并不会报错。第二个参数是一个Zend_Controller_Router_Route对象。在这里需要注意的一个,ZF0.2ZF0.15这个方法有点区别,ZF0.2直接就是一个Zend_Controller_Router_Route,而在ZF0.15中,是要创建Zend_Controller_Router_Route的参数。这里例子以ZF0.2为主。

Zend_Controller_Router_Route($route,$defaults = array(), $reqs = array())
可以接受三个参数,只有第一个是必须的。$routeURL的映射关系,$defaults指定相应的控制器和动作及参数的默认值,$reqs参数的约束条件。如:

newZend_Controller_Router_Route('/blog/:bid', array('controller' => 'blog','action' => 'view'), array('bid' => '\d+'))

/blog/:bid代表的URL的映射关系,:bid表示映射的参数,参数必须是已:开始,array('controller' => 'blog','action' => 'view')用于指定使用的控制器及动作,当然你也可以在这里设定bid的默认值’bid’ =>1, array('bid' => '\d+')指定bid必需是一个数字,这里的参数是正则表达式。


现在,我们把他们写在一起
$router->addRoute('blog', new Zend_Controller_Router_Route('/blog/:bid', array('controller' => 'blog', 'action' => 'view'), array('bid' => '\d+')));


这样直接/blog/1就能达到/blog/view/bid/1的效果。

最后不是要忘了$controller->setRouter($router);
阅读(1390) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~