dedecmsv5.7模块mvc框架解析
作者:飞飞飞070801 | 来源:互联网 | 2014-05-27 15:58
织梦MVC开发框架是一个精简、迷你的web开发框架,用这个开发框架可以编写基于织梦内容管理系统的扩展功能、模块(插件),甚至可以将其分离出来开发博客、BBS、SNS等。目录结构说明:|_app|___control控制器(C)|___model模型(M)|___templates视图模板(V)
织梦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=save
ct=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(); // 设定当前操作需要指定的模板;
$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的方式进行输出。
推荐阅读
-
本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ...
[详细]
蜡笔小新 2024-11-21 20:16:59
-
本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ...
[详细]
蜡笔小新 2024-11-20 09:46:39
-
-
本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ...
[详细]
蜡笔小新 2024-11-18 09:13:53
-
ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ...
[详细]
蜡笔小新 2024-11-16 18:09:51
-
本文讲述了一位80后的普通男性程序员,尽管没有高学历,但通过不断的努力和学习,在IT行业中逐渐找到了自己的位置。从最初的仓库管理员到现在的多技能开发者,他的职业生涯充满了挑战与机遇。 ...
[详细]
蜡笔小新 2024-11-16 16:41:44
-
本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ...
[详细]
蜡笔小新 2024-11-23 16:56:38
-
本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ...
[详细]
蜡笔小新 2024-11-23 15:39:25
-
本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ...
[详细]
蜡笔小新 2024-11-23 15:34:23
-
本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ...
[详细]
蜡笔小新 2024-11-23 12:13:06
-
本文介绍了如何在 Oracle 数据库中查询重复数据,并提供了多种方法来筛选和删除重复记录,包括基于单个字段和多个字段的重复数据处理。 ...
[详细]
蜡笔小新 2024-11-22 23:28:34
-
本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ...
[详细]
蜡笔小新 2024-11-22 19:27:04
-
本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ...
[详细]
蜡笔小新 2024-11-22 16:17:04
-
本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ...
[详细]
蜡笔小新 2024-11-22 14:15:56
-
在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ...
[详细]
蜡笔小新 2024-11-22 09:50:34
-
本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ...
[详细]
蜡笔小新 2024-11-22 05:45:48
-