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)的更多相关文章

  1. WPF内嵌代码和后台代码简单混合使用

    下面实例展示了WPF内嵌代码和后台代码混合使用,一个简单基础的实例: xaml文件: <Window x:Class="WPF内嵌代码和后台代码混合使用.MainWindow" ...

  2. js回掉页面后台代码-简单demo

    后台代码: public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler { protected void Pag ...

  3. PC-lint集成于SourceInsight 范例以及简单分析;提高代码的健壮性;

    写代码之际突然想起了pc-lint这个"古董级"的代码静态分析工具;   下午机房的服务器歇菜了,没法调试游戏,刚好抽出时间来研究一下pc-lint集成在SourceInsight ...

  4. 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)

    说明:实际企业中开发分工是很明确,往往程序员根据美工提供的UI界面进行后台代码的编写. 1.1 原始HTML页面 1.2 使用aspx进行修改 这里使用到了三层架构 using System; usi ...

  5. 20135202闫佳歆--week2 一个简单的时间片轮转多道程序内核代码及分析

    一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ p ...

  6. DWM1000 测距原理简单分析 之 SS-TWR代码分析2 -- [蓝点无限]

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 首先将SS 原理介绍中的图片拿过来,将图片印在脑海里. 对于DeviceA 和 DeviceB来说,初 ...

  7. ThinkPHP5代码执行的简单分析

    漏洞影响版本: ThinkPHP 5.0.5-5.0.22 ThinkPHP 5.1.0-5.1.30 漏洞复现: 一.mac的debug环境搭建. 一键化环境搭建工具: mamp pro ,调试工具 ...

  8. wp7之换肤原理简单分析

    wp7之换肤原理简单分析 纠结很久...感觉勉强过得去啦.还望各位大牛指点江山 百度找到这篇参考文章http://www.cnblogs.com/sonyye/archive/2012/03/12/2 ...

  9. 8人/天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整开源于 Github)

    Github: https://github.com/iccb1013/Jade.Net 我们只消耗了8人/天的时间,完成了全部工作,基于我们 Jade.Net 的开源后台代码,任何小规模的后台管理系 ...

随机推荐

  1. Python--多态与多态性、绑定方法与非绑定方法

    多态与多态性 多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 1. 序列类型有多种形态:字符串,列表,元组. s='hello' l=[,,] t=('a',' ...

  2. Mybatis基于XML配置SQL映射器(一)

    Durid和Mybatis开发环境搭建 SpringBoot搭建基于Spring+SpringMvc+Mybatis的REST服务(http://www.cnblogs.com/nbfujx/p/76 ...

  3. Linux系统之-介绍,主要特性

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位 ...

  4. java对象属性为date oracle数据库字段为Timestamp 处理方式

    解决方案 SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date da ...

  5. centos 7 下升级自带 sqlite3

    问题 在 centos 7 上面运行 django 2.2 开发服务器时出现: django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or ...

  6. Jmeter beanshell断言 org.json.jar包下载

    链接:https://pan.baidu.com/s/1O01ODjlKyqmz2NyDT0MCww 提取码:a5va 欢迎关注微信公众号:软件测试汪,qq技术交流群:809111560

  7. 字符串模式匹配算法系列(三):Trie树及AC改进算法

    Trie树的python实现(leetcode 208) #!/usr/bin/env python #-*- coding: utf-8 -*- import sys import pdb relo ...

  8. PAT甲级——A1146 TopologicalOrder【25】

    This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topol ...

  9. Struct和Union的sizeof计算

    struct 结构体的大小不是简单的成员相加,要考虑存储空间的字节对齐 1.空结构体的大小为1 2.含有static的结构体在计算大小时不算上static变量,因为static存储在全局数据空间,而s ...

  10. 洛谷 P1198 [JSOI2008]最大数——单调栈/线段树

    先上一波题目 https://www.luogu.org/problem/P1198 题目要求维护后缀最大值 以及在数列的最后面添加一个数 这道题呢我们有两种做法 1.单调栈 因为只需要维护后缀最大值 ...