DedeCMSV5.7模块MVC框架分析

所属分类: CMS教程 / dedecms 阅读数: 1079
收藏 0 赞 0 分享

本文较为详细的分析了DedeCMSV5.7模块MVC框架结构。分享给大家供大家参考。具体分析如下:

织梦MVC开发框架是一个精简、迷你的web开发框架,用这个开发框架可以编写基于织梦内容管理系统的扩展功能、模块(插 件),甚至可以将其分离出来开发博客、BBS、SNS等.

目录结构说明:

复制代码
代码如下:
|_app
|___control 控 制器(C)
|___model 模型(M)
|___templates 视图模板(V)
|___libraries 类 库
|___data 配置
|___data\helper 小助手
|___static 样式,js,图片文件夹
|___index.php 统一入口文件

统一入口解析地址:http://你的 网址/app/index.php?ct=index&ac=savect=index:控制器入口,对应到目录control中的 index.php

如果RunApp()指定了第三个参数,例如问答中RunApp($ct, $ac , 'admin'),说明ct=index:控制器入口,对应到目录control/admin中的index.php

ac=save:操作,对应 文件index.php中的class index中function ac_save()

控制器中将相关功能操作都存放至一个文件中,例如留言 板,可以使用:

?ct=guestbook&ac={do}统一完成,这样也便于静态化部署.

1.控制器开发说明 (control):

基本代码结构:

复制代码
代码如下:
class yourctname extends Control
{
public function ac_save()
{

}
}

控制器可以选择继承一 个基类:Control,这个类对应的文件名是/include/control.class.php,这里面含有基类的相关操作说明,这里有几个常用方 法:

$control->Model();

载入一个模型。例如问答模块中index.php中的 $this->question = $this->Model('mquestion'),就是在载入了mquestion这个模型。然后我们就可以通 过$this->question来调用模型相应操作。实现数据的插入,更新等等操作。调用类的名字可以随便定义,但要保证没有冲突。模型的文件放 在model目录中。

$control->Libraries();

载入一个类。有时开发我们需要一个系统 中不存在的类时,我们可以通过这个方法来载入一个自己的类。具体的方法和模型一样。类放在libraries目录中。

$control->helper();

载入一个小助手,引入小助手是为了更好的帮助我们存放和管理需要用到的Function,具体的方法和模型一样,小助手放在 data\helper目录中.

复制代码
代码如下:
$control->SetTemplate();
$control->SetTemplet(); // 设定当前操作需要指定的模板;
//phpfensi.com
$control->SetVar($k, $v); // 设定模板需要解析的变量,在模板中使用{dede:var.name /}进行调用.

GLOBALS['k'] = $k;

设定模板需要的变量,在模板中可以直接用方式输出,问答模块基本上都是采用这样的方式输出,这种方式比较适合处理一些复杂的数据,例如数组.

复制代码
代码如下:
$control->GetVar($k); // 获取设定的模板变量
$control->Display(); // 显示模板解析后的内容
$control->SaveTo(); // 将内容保存到文件

控制器中关于模板的使用操作可以参看DedeTemplate模板引擎,具体可以参看公司内部开发文档中模板说明相关 章节.

模型开发说明(Model):

复制代码
代码如下:
class mtype extends Model
{
public function get_one()
{

}
}

控制器可以选择继承一个基类:Model,这个类对应的文件名是/include/model.class.php,这里面 含有数据库类的相关操作说明,这里只有一个方法:

$model->dsql();

实例化数据库操作类,模型中关于数据库类的使用操作可以参看数据库类使用说明

模板标签调用说明:

如果在控制器中通过$control->SetVar($k, $v); 这种方式设定的参数,我们通过标签 {dede:var.name /}的方式进行调用.

如果在控制器中通过GLOBALS['k'] = $k;这种方式设定的参数,我们通过标签 {dede:global.name/}的方式进行调用或者直接采用php的方式进行输出.

希望本文所述对大家的dedecms二次开发有所帮助。

更多精彩内容其他人还在看

DedeCMS 5 .7 自定义表单制作和调用办法[图文]

在很多建站需求中,需要一些额外的表单供前台用户提交,以便于收集、统计、分析及处理更多的数据,比如:在线订单、在线报名等一些常见的互动应用
收藏 0 赞 0 分享

dedecms 添加字段后软件列表页无法调用软件大小问题的解决方法

最近做模版想在软件列表页(list_soft.htm)利用[field:softsize/]调用软件大小,才发现原来需要如果解决方法
收藏 0 赞 0 分享

织梦DedeCMS模板防盗的四种方法分享

织梦(DedeCMS)模板也是一种财富,不想自己辛辛苦苦做的模板被盗用,在互联网上出现一些和自己一模一样的网站,就需要做好模板防盗
收藏 0 赞 0 分享

dedecms TAG标签按栏目显示的方法

想让dedecms 的TAG标签按栏目显示
收藏 0 赞 0 分享

dedecms修改按tag标签显示全站相关内容的方法

本文简单的设置就可以把dedecms按tag标签显示全站相关内容
收藏 0 赞 0 分享

dedecms正文自动排版插件 伪原创站必备

为了节约时间,站长可以安装dedecms正文自动排版插件,通过该插件,所有的隐藏代码、链接代码、垃圾代码可以一并删除,统一文章格式,方便简单
收藏 0 赞 0 分享

织梦dedecms 提示 body has not allow words 问题解决

body has not allow words DEDE提示这个是什么意思呢
收藏 0 赞 0 分享

dedecms修改文章自动增加的起始ID从指定数字增加文章ID的方法

dedecms织梦文章系统修改文章自动增加的起始ID从指定数字增加文章ID的方法教给大家
收藏 0 赞 0 分享

dedecms V5.7修改表前缀的方法及出现不显示文章内容的解决方法

将下面的内容保存为 pre.bat 内容可以使用记事本批量替换成你的表前缀和想要改成的前缀. window下的ren命令是重命名的
收藏 0 赞 0 分享

织梦 DeDeCMS 添加自定义属性的方法(图文教程)

由于想在网站首页添加一个本站原创内容的版块.又没办法通过版块id来调用,把每篇原创文章添加副栏目又非常麻烦
收藏 0 赞 0 分享
查看更多