dedecms mvc 开发
目录结构说明:
|_app
|___control 控制器(C)
|___model 模型(M)
|___templates 视图模板(V)
|___libraries 类库
|___data 配置
|___data\helper 小助手
|___static 样式,js,图片文件夹
|___index.php 统一入口文件
index.php入口文件
require_once(dirname(__file__).'/../include/common.inc.php'); require_once(DEDEINC.'/request.class.php'); $ct = Request('ct','index');//c代表着control,即:控制器名(即文件名,类名)
$ac = Request('ac','index');//a代表着action,即该控制器下的某个方法 //统一应用程序入口,即根据url访问相应的页面 RunApp($ct,$ac);
control下 index.php 控制器
//注意,所有的控制器类都要继承Model类
class index extends Control{ // dedecms mvc中的控制器方法,一律需要添加前缀 ac_ ,这是必须这么做的
function ac_index(){
echo "这里是dedecms API开发教程<br/>";
echo "<a href='index.php?ct=article&ac=artlist'>列出文章</a>";
}
控制器可以选择继承一个基类: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;
// 设定模板需要的变量,在模板中可以直接用<?php echo $k;?>方式输出(问答模块基本上都是采用这样的方式输出),这种方式比较适合处理一些复杂的数据,例如数组。
$control->GetVar($k); // 获取设定的模板变量
$control->Display(); // 显示模板解析后的内容
$control->SaveTo(); // 将内容保存到文件
注:我用v5.7版本时,用的以下方法:
$tp = new DedeTemplate;
$tp->SetArray("art",$res);
$tp->LoadTemplate(DEDEROOT."/api/templates/test.htm");
$tp->Display();
模板标签调用说明:
如果在控制器中通过$control->SetVar($k, $v); 这种方式设定的参数,我们通过标签 {dede:var.name /}的方式进行调用。
如果在控制器中通过GLOBALS['k'] = $k;这种方式设定的参数,我们通过标签 {dede:global.name/}的方式进行调用或者直接采用php的方式进行输出。
<?php foreach ($art as $k=>$v){ ?>
<li><a href="<?php echo $v['url']; ?>"><?php echo $v['title']; ?></a></li>
<?php }; ?> {dede:array.art}
<li><a href="{dede:value.url /}">{dede:value.title /}</a></li>
{/dede:array}
模板解析,可参考:https://blog.csdn.net/crisis111/article/details/45267839
gitee地址:git@gitee.com:lizole/dedecmsapi.git
dedecms mvc 开发的更多相关文章
- 2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程
2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程 所有项目均带有软件,笔记,视频,源码 日期 课程(空内容代表放假) 2015/7/10 星期五 开学典礼 ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- MVC开发模式下的用户角色权限控制
前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...
- ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...
- MVC开发模式之Servlet+jsp+javaBean
Servlet+jsp+JavaBean组合开发是一种MVC开发模式,控制器Controller采用Servlet.模型Model采用JavaBean.视图View采用JSP. 1.Web开发的请求- ...
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...
- 解析ASP.NET WebForm和Mvc开发的区别
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- 解析ASP.NET Mvc开发之查询数据实例
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 ------------------------------------------------- ...
随机推荐
- 爬了招聘网站之后,总结Python学习的几点建议
来源商业新知网,原标题::爬了招聘网站之后,给你几点学习Python的建议 Python语言相关的岗位非常多,有运维,有自动化测试,有后端开发,有机器学习,如果想要快速上手,并且有不错的就业,那就推荐 ...
- P61 实践作业
网络攻防实验环境搭建 根据链接下载的实验工具包,将其解压 打开VM虚拟机,点击图中红色框,扫描虚拟机 选择文件所在位置 点击下一步,完成.即可 在VM虚拟机设置中把网络适配器修改为桥接模式.如下图 在 ...
- TCP协议和UDP协议基础介绍
TCP协议和UDP协议区别 标签(空格分隔): TCP,udp TCP的三次握手 TCP被称为可靠的数据传输协议,主要是通过许多机制来实现的其中最主要的就是三次握手的功能,当然,TCP传送数据的机制非 ...
- flask接收post提交的json数据并保存至数据库
定义数据模型 # 定义数据模型class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(d ...
- 异步、非阻塞和IO多路复用总结
Nginx是并发处理框架的代表者,很多后台业务都会放在Nginx容器中运行,以实现高吞吐,而Nginx能够支持高并发也是由于使用了异步非阻塞处理模型,本文将用通俗的话讲解异步.同步.阻塞.非阻塞的区别 ...
- Leetcode中sort排序遇到的一些问题
class Solution { public: static bool cmp(vector<int>a,vector<int>b) { ]-a[]<b[]-b[]; ...
- 微信小程序记账本进度三
//index.jsvar util = require("../../utils/util.js"); //获取应用实例 var app = getApp(); Page({ d ...
- sql转百分比并保留两位小数
--转百分比并保留两位小数 select ProfitRate =Convert(nvarchar(20), (Convert(decimal(18,2),((DayPrice -MyPrice)*1 ...
- Java 数据类型与运算符
JAVA数据类型分基本(内置)数据类型和引用数据类型. 区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上. 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存 ...
- 20165315 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解
20165315 2018-2019-2 <网络对抗技术>Exp1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调 ...