多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# URL路由&创建 - [URL路由](#URL_1) - [解析路由](#_2) - [约定及使用](#_5) - [创建一个URL](#URL_6) #### URL路由 入口脚本程序获取到到URL中相关的GET参数,解析后进行权限判断,然后调用相应的控制器处理这个请求。该过程就被称为URL路由(routing)。 #### 解析路由 ##### 地址URL地址路由 当传入的URL请求中包含一个名为 **c**、**a**、**do**(可选) 的 GET 参数,它即被视为一个路由,例如: ``` http://we7.cc/web/index.php?c=platform&a=menu& ``` 则会路由至 **/web/source/platform/menu.ctrl.php** 文件中 ``` http://we7.cc/app/index.php?c=mc&a=home& ``` 则会路由至 **/app/source/mc/home.ctrl.php** 文件中 ##### 模块URL地址路由 当传入的 **c** 值为 “site”, **a** 值为 “entry”时则是一个模块路由,例如: ``` http://we7.cc/web/index.php?c=site&a=entry&do=themeset&m=we7_demo ``` 则会路由至 **/addons/we7\_demo/site.php** 文件中的 **doWebThemeset()** 方法。 ``` http://we7.cc/app/index.php?i=1&j=2&c=entry&do=list&m=we7_demo ``` 则会路由至 **/addons/we7\_demo/site.php** 文件中的 **doMobileList()** 方法。 #### 约定及使用 GET 参数中的 **c**、**a**、**do**为微擎系统的路由参数,应当避免与系统参数冲突,在程序中可以使用 **$controller**、**$action**、**$do**来获取对应的路由三个参数 #### 创建一个URL 微擎提供一个创建URL的函数 **url($segment, $params = array(), $noredirect = false)** , 路由的表达式以斜杠“/”的方式组织,每个以斜杠分隔的片段都是指向某一控制器(controller)、操作(action)或是行为(do)。 第二个参数则是以数组的形式表示URL中的QueryString。例如: ``` //生成此地址 //http://we7.cc/web/index.php?c=site&a=entry&do=themeset&m=we7_demo echo url('site/entry/themeset', array('m' => 'we7_demo')); //http://we7.cc/app/index.php?c=mc&a=home& echo url('mc/home'); ``` 模块中二次封装了系统的 **url()** 函数,使用时变的更加简单,例如: ``` class We7_demoModuleSite extends WeModuleSite { public function doMobileIndex() { echo $this->createMobileUrl('home'); } public function doMobileHome() { //上面doMobileIndex()生成的链接会进入到这里 } publci function doWebIndex() { echo $this->createWebUrl('home'); } public function doWebHome() { //上面doWebIndex()生成的链接会进入到这里 } } ```