Skip to content

Latest commit

 

History

History
185 lines (140 loc) · 3.71 KB

10.路由.md

File metadata and controls

185 lines (140 loc) · 3.71 KB

路由

1. Yaf\Route_Static,默认路由

  • 规则
;/module/controller/action/param1/value1/param2/value2
  • 注意:request->getParams()方法接收参数

2.Yaf\Route\Simple

  • 规则
;?m=module&c=controller&a=action&param1=value1&param2=value2
  • 路由添加方式
<?php

class Bootstrap extends \Yaf\Bootstrap_Abstract
{
    public function _initRoute(\Yaf\Dispatcher $dispacher)
    {
        $router = $dispacher->getRouter();

        $router->addRoute('simple',new \Yaf\Route\Simple('m','c','a'));
    }
}

?>
  • 注意:request->getQuery()方法接收参数

3.Yaf\Route\Supervar

  • 规则
;?r=/module/controller/action/param1/value1/param2/value2
  • 路由添加方式
<?php

class Bootstrap extends \Yaf\Bootstrap_Abstract
{
    public function _initRoute(\Yaf\Dispatcher $dispacher)
    {
        $router = $dispacher->getRouter();

        $router->addRoute('supervar',new \Yaf\Route\Supervar('r'));
    }
}

?>
  • 注意:request->getParams()方法接收参数

4.Yaf\Route\Regex

  • 路由添加方式
<?php

class Bootstrap extends \Yaf\Bootstrap_Abstract
{
    public function _initRoute(\Yaf\Dispatcher $dispacher)
    {
        $router = $dispacher->getRouter();

        $router->addRoute('regex',
            new \Yaf\Route\Regex(
               '#regex/(\d+)/(\d+)#',
               [
                   'module'      => 'rest',
                   'controller'  => 'rest',
                   'action'      => 'route',
               ],
               [
                   1 => 'param1',
                   2 => 'param2',
               ]
            )
        );
    }
}

?>
  • 注意:request->getParams()方法接收参数

5.Yaf\Route\Rewrite

  • 添加方式
<?php

class Bootstrap extends \Yaf\Bootstrap_Abstract
{
    public function _initRoute(\Yaf\Dispatcher $dispacher)
    {
        $router = $dispacher->getRouter();

        $router->addRoute('rewrite',
            new \Yaf\Route\Rewrite(
                'rewrite/:param1/:param2',
                [
                    'module'      => 'rest',
                    'controller'  => 'rest',
                    'action'      => 'route',
                ]
            )
        );
    }
}

?>

6.通过配置文件添加路由

  • 配置方式
;注意,路由的匹配是由优先级的,路由是根据配置文件由上到下的顺序逐一匹配路由,如果路由一旦匹配成功,后面的路由就不在匹配
;上面的路由优先级高于下面的路由
;添加一个名为simple的路由协议
routes.simple.type="simple"
routes.simple.module=m
routes.simple.controller=c
routes.simple.action=a

;添加一个名为supervar的路由协议
routes.supervar.type="supervar"
routes.supervar.varname=r

#添加一个regex的路由
routes.regex.type="regex"
routes.regex.match="#/regex/(\d+)/(\d+)#"
routes.regex.route.module=rest
routes.regex.route.controller=rest
routes.regex.route.action=route
routes.regex.map.1=param1
routes.regex.map.2=param2

;添加一个名为rewrite的路由协议
routes.rewrite.type="rewrite"
routes.rewrite.match="rewrite/:param1/:param2"
routes.rewrite.route.module=rest
routes.rewrite.route.controller=rest
routes.rewrite.route.action=route
  • 添加方式
<?php
class Bootstrap extends \Yaf\Bootstrap_Abstract
{
 public function _initRoute(\Yaf\Dispatcher $dispacher)
 {
     $router = $dispacher->getRouter();

     $router->addConfig(\Yaf\Application::app()->getConfig()->routes);
 }
}
?>