博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phpcmsv9关于url路由在二次开发中的使用方法介绍-实现泛解析
阅读量:5823 次
发布时间:2019-06-18

本文共 3276 字,大约阅读时间需要 10 分钟。

hot3.png

v9有一个很强大的url路由功能,那么具体他是用来做什么的,怎么用呢?下面来给个说明:

首先,路由是负责将用户请求映射到特定的 MVC 控制器操作.v9默认的路由文件是 caches\configs\route.php ,默认路由如下:

'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init')

复制代码

default是默认路由,在没有任何匹配的情况下,将映射到content模块index文件的init方法.

我们再来看下路由是在哪里被处理的.打开\phpcms\libs\classes\param.class.php ,找到下面一句代码:

$this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', 'default');

复制代码

这里读取路由配置,根据常量 SITE_URL 查找是否存在路由配置,如果存在就加载,否则就加载默认的default配置.

SITE_URL这个常量是做什么的呢?看看他的定义:

//当前访问的主机名

define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));

复制代码

也就是我们访问的域名,比如 pic.51aimei.com 或者 baike.51aimei.com 又或者 bbs.51aimei.com ,不带http.

那么,比如我们有一个域名 bbs.51aimei.com ,他的动态访问地址是 m=bbs&c=index&a=init .那么我们在做过域名绑定到v9后,访问 bbs.51aimei.com 就能定位到 m=bbs&c=index&a=init ,这时候就要依靠url路由.因此定义如下路由:

'bbs.51aimei.com'=>array('m'=>'bbs', 'c'=>'index', 'a'=>'init'),

复制代码

一个完整的url路由功能就实现了.利用此功能,可以实现泛解析到不同模块,不同栏目等等.

比如给你的v9黄页模块做一个 yp.phpcms.cn 路由到 m=yp&c=index&a=init .

这样每一个模块都是一个拥有二级域名的子站了,而同时利用v9的数据表分离功能,可以实现一些较大的应用.

希望大家有好东西一起分享,诚招女性网站(prbr2百度收录2k以上)友链.谢谢.

结尾国际惯例,回复可见.

分享一个网站的泛解析处理方法:

路由如下:

<?php

/**

* 路由配置文件

* 默认配置为default如下:

* 'default'=>array(

*         'm'=>'phpcms', 

*         'c'=>'index', 

*         'a'=>'init', 

*         'data'=>array(

*                 'POST'=>array(

*                         'catid'=>1

*                 ),

*                 'GET'=>array(

*                         'contentid'=>1

*                 )

*         )

* )

* 基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。

* data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。在程序中您可以使用$_POST['catid']来得到data下面POST中的数组的值。

* data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如:

* 外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。

*/

/*二级域名泛解析的配置,包括以下几种

                项目http://xiongbu.soyiyuan.com/

                地区http://korea.soyiyuan.com/

                医院http://krmeilai.soyiyuan.com/

                */

switch($GLOBALS['domain']){

    case 'www':

    $array = array('default'=>array('m'=>'content','c'=>'index','a'=>'init'));

                break;

                default:

    $array = array(SITE_URL=>domain( $GLOBALS['domain'] ) );

                        break;

}

return $array;

复制代码

其中函数 domain定义如下:

//二级域名泛解析后的处理

function domain(){

$domain = getcache('domain','commons');

$domain_data = $domain[$GLOBALS['domain']];

if( !empty($domain_data) ){

   return parse_domain($domain_data) ;

}

else{

header("HTTP/1.1 404 Not Found");

header("Status: 404 Not Found");

$db = pc_base::load_model('http404_model');

$db->add();

echo file_get_contents(PHPCMS_PATH.'404.htm');

  }

}

function parse_domain($array){

   switch($array['type']){

     

         case '3833'://手术项目,也即栏目

         $catid = $array['keyid'];

         $id = $_GET['id'];

         $GET = $id ? array('id'=>$id,'catid'=>$catid) : array('catid'=>$catid);

     $newarr = array('m'=>'content','c'=>'index','a'=>$id ? 'show': 'lists','data'=>array('GET'=>$GET));

         $GLOBALS['catid'] = $catid;

                 break;

                 case '3834'://城市地区

         $newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));

                 $GLOBALS['cityid'] = $array['keyid'];

                         break;

           case '3835'://整形医院

       $newarr = array('m'=>'yp','c'=>'com_index','a'=>'init','data'=>array('GET'=>array('userid'=>$array['keyid'])));

           $GLOBALS['hospitalid'] = $array['keyid'];

           break;

   

   }

   return $newarr;

}

复制代码

结合了联动菜单的地区,权当是抛砖引玉了.

尤其注意

$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));

复制代码

这里的定义方式,数据的格式一定要正确.

开发

转载于:https://my.oschina.net/yonghan/blog/524863

你可能感兴趣的文章
Windows 8下如何删除无线配置文件
查看>>
解决Windows 7中文件关联和打开方式
查看>>
oracle系列(五)高级DBA必知的Oracle的备份与恢复(全录收集)
查看>>
hp 服务器通过串口重定向功能的使用
查看>>
国外10大IT网站和博客网站
查看>>
android第十一期 - SmoothSwitchLibrary仿IOS切换Activity动画效果
查看>>
zabbix 批量web url监控
查看>>
MongoDB CookBook读书笔记之导入导出
查看>>
shell如何快速锁定所有账号
查看>>
HTML 5实现的手机摇一摇
查看>>
Linux 文件IO理解
查看>>
Ninject 2.x细说---2.绑定和作用域
查看>>
30个非常时尚的网页联系表单设计优秀示例
查看>>
使用membership(System.Web.Security)来进行角色与权限管理
查看>>
opticom 语音质量验证白皮书
查看>>
3D实时渲染中的BSP树和多边形剔除
查看>>
Frank Klemm's Dither and Noise Shaping Page: Dither and Noise Shaping In MPC/MP+
查看>>
网络抓包的部署和工具Wireshark【图书节选】
查看>>
Redis在Windows+linux平台下的安装配置
查看>>
Maven入门实战笔记-11节[6]
查看>>