onethink后台代码简单分析(1)
onethink后台的入口页面同样是Index/index控制器
首先,Index继承了AdminController,AdminController有一个_initialize函数,这是所有后台运行的基本函数,Public控制器控制了登录页面,Public继承于Controller。
运行后台是会首先进入到Index,接着在init中跳转到登录,登录成功跳转到Index,此时会接着运行init,进行一些其他检测,完成菜单模板变量的分配,完成登录控制。
在Admin的init初始化函数中,完成了UID和IS_ROOT宏的检测,UID跳转到登录页面,IS_ROOT输出403禁止访问,和未授权访问。
接着分配__MENU__菜单变量,这个变量在模板继承中的base.html文件中使用,使用了getMenus()函数来实现。
base.html主要定义了边栏和内容区,以及菜单和用户的修改密码,修改昵称。
base.html中的__MENU__.main,关联的是menu这张表,这张表的url字段存储的是跳转链接,pid为0的是最顶部菜单栏目,title是显示的文本内容。
Admin控制器的getMenus()函数代码很长,初步效果是读取了menu表的数据,__MENU__.main存储了pid为0的菜单
本来以为是动态读取menu表的数据,根据表数据自动生成菜单,因为menu表中存储的有新增啦,编辑啦。接着看内容菜单Article/index,看Article/Index模板中的内容html代码,发现这些文章添加,文章删除等这些不是从Article/Index控制器中分配的变量,而是静态的HTML代码来描述这些菜单项。
这也就解释了为什么__MENU__.main变量中的数据只有顶部菜单。
CMS最为核心的是什么?是内容管理,框架最核心的是什么?简化工作。
onethink后台代码简单分析(1)的更多相关文章
- WPF内嵌代码和后台代码简单混合使用
下面实例展示了WPF内嵌代码和后台代码混合使用,一个简单基础的实例: xaml文件: <Window x:Class="WPF内嵌代码和后台代码混合使用.MainWindow" ...
- js回掉页面后台代码-简单demo
后台代码: public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler { protected void Pag ...
- PC-lint集成于SourceInsight 范例以及简单分析;提高代码的健壮性;
写代码之际突然想起了pc-lint这个"古董级"的代码静态分析工具; 下午机房的服务器歇菜了,没法调试游戏,刚好抽出时间来研究一下pc-lint集成在SourceInsight ...
- 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)
说明:实际企业中开发分工是很明确,往往程序员根据美工提供的UI界面进行后台代码的编写. 1.1 原始HTML页面 1.2 使用aspx进行修改 这里使用到了三层架构 using System; usi ...
- 20135202闫佳歆--week2 一个简单的时间片轮转多道程序内核代码及分析
一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ p ...
- DWM1000 测距原理简单分析 之 SS-TWR代码分析2 -- [蓝点无限]
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 首先将SS 原理介绍中的图片拿过来,将图片印在脑海里. 对于DeviceA 和 DeviceB来说,初 ...
- ThinkPHP5代码执行的简单分析
漏洞影响版本: ThinkPHP 5.0.5-5.0.22 ThinkPHP 5.1.0-5.1.30 漏洞复现: 一.mac的debug环境搭建. 一键化环境搭建工具: mamp pro ,调试工具 ...
- wp7之换肤原理简单分析
wp7之换肤原理简单分析 纠结很久...感觉勉强过得去啦.还望各位大牛指点江山 百度找到这篇参考文章http://www.cnblogs.com/sonyye/archive/2012/03/12/2 ...
- 8人/天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整开源于 Github)
Github: https://github.com/iccb1013/Jade.Net 我们只消耗了8人/天的时间,完成了全部工作,基于我们 Jade.Net 的开源后台代码,任何小规模的后台管理系 ...
随机推荐
- Cytoscape——实例
本文将具体操作怎样用Cytoscape绘制网络图 Cytoscape所支持的数据格式:1.*.sif格式: nodeA<interaction>nodeB nodeC<inter ...
- 深入了解 Flink 网络栈(二):监控、指标和处理背压
在之前的文章中,我们从高级抽象到底层细节各个层面全面介绍了 Flink 网络栈的工作机制.作为这一系列的第二篇文章,本文将在第一篇的基础上更进一步,主要探讨如何监视与网络相关的指标,从而识别背压等因素 ...
- QT文件和目录
一.文件操作 QFile和QFileInfo: #include <QCoreApplication> #include <QFileInfo> #include <QS ...
- mybatis中递归查询
业务是这样的,一个商品有不同的规格,所有规格选择完后会出现价格,这些规格我是放在一个表里,父子级关系.mybatis做的时候传过来一个商品Id.然后根据商品id去找所有的规格. <?xml ve ...
- 存储-docker存储(12)
storage driver 和 data volume 是容器存放数据的两种方式 storage driver方式 docker info | grep "Storage Driver&q ...
- 前端每日实战:57# 视频演示如何用纯 CSS 创作一双黑暗中的眼睛
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xzYVzO 可交互视频 此视频是可 ...
- PHP使用引用变量foreach时,切记其他循环不要使用同一个名字的变量
foreach ($log['data'] as $k => &$value) { if ($value['token'] != 0) { $value['change_num'] = ...
- Android毕业四年升P8,年收入超100w,他是如何做到的?
很多人从事Android开发工作多年,走过的弯和坎,不计其数,经历的心酸难与外人道也.相信大家感触最深的还是:选择大于努力.选择正确的方向,才能够走的更远,更踏实. 今天我来分享一下自己心得体会,并没 ...
- Scrapy框架: 基本命令
1.创建爬虫项目 scrapy startproject [项目名称] 2.创建爬虫文件 scrapy genspider +文件名+网址 3.运行(crawl) scrapy crawl 爬虫名称 ...
- 详解 Flexible Box 中的 flex 属性
导读: 弹性盒子是 CSS3 的一种布局模式,一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有适当的行为的布局方式.其中 flex 属性用于指定弹性子元素如何分配空间. flex 属性的值 ...