1. URL路由概况
入口脚本程序获取到URL中相关的GET参数,解析后进行权限判断,然后调用相应的控制器处理这个请求。该过程就被称为URL路由(routing)。
约定及使用GET 参数中的 c、a、do为微擎系统的路由参数,应当避免与系统参数冲突,在程序中可以使用 $controller
、$action
、$do
来获取对应的路由三个参数。
地址URL地址路由
当传入的URL请求中包含一个名为 c、a、do(可选) 的 GET 参数,它即被视为一个路由,例如:
http://w7.cc/web/index.php?c=platform&a=menu&
则会路由至 /web/source/platform/menu.ctrl.php 文件中
http://w7.cc/app/index.php?c=mc&a=home&
则会路由至 /app/source/mc/home.ctrl.php 文件中。
模块URL地址路由
Web端
当传入的 c 值为 “site”, a 值为 “entry”时则是一个模块路由,例如:
http://w7.cc/web/index.php?c=site&a=entry&do=themeset&module_name=we7_demo
则会路由至 /addons/we7_demo/site.php 文件中的 doWebThemeset()
方法。
APP端
当传入的c 值为 “entry”时则是一个模块路由。如果a值为空,默认进入模块的site.php;如果a值不为空(a的有效值有:aliapp、baiduapp、phoneapp、site、toutiaoapp、webapp、wxapp、xzapp),则进入对应的模块php文件,例如:
http://w7.cc/app/index.php?i=1&j=2&c=entry&do=list&module_name=we7_demo
则会路由至 /addons/we7_demo/site.php 文件中的 doMobileList()
方法
http://we7.cc/app/index.php?i=1&j=2&c=entry&a=wxapp&do=list&module_name=we7_demo
则会路由至 /addons/we7_demo/wxapp.php 文件中的 doPageList()
方法
2. URL函数
url() - 创建一个URL
在APP端调用
url($segment, $params = array(), $noredirect = false)
参数
名称 | 类型 | 说明 |
---|---|---|
$segment | string | 路由参数 |
$params | array | 附加参数 |
$noredirect | boolean | 是否追加微信URl后缀 |
路由的表达式以斜杠“/”的方式组织,每个以斜杠分隔的片段都是指向某一控制器(controller)、操作(action)或是行为(do)。
第二个参数则是以数组的形式表示URL中的QueryString。
示例
echo url('site/entry/themeset', array('module_name' => 'we7_demo'));
//./index.php?i=281&c=site&a=entry&do=themeset&module_name=we7_demo&wxref=mp.weixin.qq.com#wechat_redirect
echo url('entry/site');
//./index.php?i=281&c=entry&a=site&
在web端调用
url($segment, $params = array(), $contain_domain = false)
参数
名称 | 类型 | 说明 |
---|---|---|
$segment | string | 路由参数 |
$params | array | 附加参数 |
$contain_domain | boolean | 是否包含域名信息 |
路由的表达式以斜杠“/”的方式组织,每个以斜杠分隔的片段都是指向某一控制器(controller)、操作(action)或是行为(do)。
第二个参数则是以数组的形式表示URL中的QueryString。
示例
echo url('site/entry/themeset', array('module_name' => 'we7_demo'));
//./index.php?c=site&a=entry&do=themeset&module_name=we7_demo
echo url('mc/home');
//./index.php?c=mc&a=home&
3. createMobileUrl函数
$this->createMobileUrl() - 模块中二次封装了系统的 url() 函数,使用时变的更加简单
说明
$this->createMobileUrl(string $string);
生成app端的url
示例
class We7_demoModuleSite extends WeModuleSite {
public function doMobileIndex() {
echo $this->createMobileUrl('home');
}
public function doMobileHome() {
//上面doMobileIndex()生成的链接会进入到这里
}
}
4. createWebUrl函数
$this->createWebUrl() - 模块中二次封装了系统的 url() 函数,使用时变的更加简单
说明
$this->createWebUrl(string $string);
生成web端url
示例
class We7_demoModuleSite extends WeModuleSite {
public function doWebIndex() {
echo $this->createWebUrl('home');
}
public function doWebHome() {
//上面doWebIndex()生成的链接会进入到这里
}
}