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值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值