`
lfq618
  • 浏览: 85497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Zend Framework自定义路由一则

阅读更多

经常性的看到如下的url:

http://www.junstudio.cn/id/4

或者更干脆

http://www.junstudio.cn/3

链接清爽,且搜索引擎友好.
ZF为我们提供了快速简单的实现方式,代码如下

  1. //$front为前段控制器实例  
  2. $router = $front->getRouter();  
  3. //实现如http://www.junstudio.cn/id/4类型的url  
  4. $router->addRoute(test1,   
  5.     new Zend_Controller_Router_Route(id/:aid,   
  6.         array(  
  7.             controller=>index,  
  8.             action=>view                          
  9.         )  
  10.     )  
  11. )  
  12. //实现如http://www.junstudio.cn/3类型的url  
  13. ->addRoute(test2,   
  14.     new Zend_Controller_Router_Route(/:aid,   
  15.         array(  
  16.             controller=>index,  
  17.             action=>view                          
  18.         )  
  19.     )  
  20. );


addRoute有两个参数,第一个为URL规则名称,第二个为URL规则的实例,该实例对应类必须实现Zend_Controller_Router_Interface接口,通常为Zend_Controller_Router_Route.
Zend_Controller_Router_Route有三个参数,定义原型为:
public function __construct($route, $defaults = array(), $reqs = array())
其中,
$route为URL匹配的方式, 例如test1实例中的’id/:aid’表示匹配http://www.junstudio.cn/id/x,”:”代表之后为URL变量分隔符, 表示在实际的URL中aic为变量.
$defaults表示在URL匹配$route指定的形式时默认的各种参数,本例中设置了 控制器为index,动作为view, 所以当URL匹配时则相当于访问了http://www.junstudio.cn/index/view/id/x
$reqs则用于指定匹配的正则表达式, 例如 我们可以指定aid为整数时才匹配, 则:

  1. $router->addRoute(test1,   
  2. new Zend_Controller_Router_Route(id/:aid,   
  3.         array(  
  4.             controller=>index,  
  5.             action=>view                          
  6.           )  
  7.       ),  
  8. array(aid=>\d+)  
  9. )  
  10. );  
  11. $router->addRoute(test1,
  12. new Zend_Controller_Router_Route(id/:aid,
  13.         array(
  14.             controller=>index,
  15.             action=>view                       
  16.           )
  17.       ),
  18. array(aid=>\d+)
  19. )
  20. );

简单的介绍下,更多请查看ZF手册.

补充:
定义了’id/:aid’形式的路由规则之后,在动作控制器中,使用
$this->_request->getParam(‘aid’);
来获得id值.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics