由于公司需求所以大概花了一个星期搞了一个一个基于onethink的数据管理平台demo不得不说onethink这个基于thinkphp3.2.3的框架还是很棒的 让我这个没基础过php的人也能在一星期能搞出东西来整理一下所遇到的坑 希望能给看到这篇文章的你有所帮助

首先安装onethink

1.连接数据库

由于onethink是基于mysql的如果你需要用mongo的话需要做数据表迁移由于后台权限逻辑本来就不适合mongo来搞 所以这里建议用mysql如果需求需要mongo数据库那么最好用mysql和mongo数据库结合的方式那么坑就来了

由于thinkphp的原因它本身对mongo的扩展没那么好 亲测 如果mongo为主mysql为辅 使用官方介绍的方法切换数据库完全没问题 反过来那就蛋疼了thinkphp官方接锅需要改底层代码 我这里说具体的解决方案尽量不改源代码 首先参考手册介绍的在common 文件夹下的config里的mysql的链接配置后将mongo数据库的信息写入如下图:(注意这里mongo的表前缀写与不写无所谓由于thinkphp问题(bug)导致它只会用全局的即上面mysql的前缀     解决方法见这里

接下来在Model在新建例如BooksModel.class.php内容如下(thinkphp底层会将表名强行转成小写所以这里使用$trueTableName绕过转化否则会找不到表 也可以采用这里的方法改底层文件):

然后你就可以愉快的在BooksController操作使用D("Books")进行数据库的操作这里的 M方法不能用会报找不到表错误的信息仔细一看还是表前缀出的问题(官方背锅M方法里面的也是用的全局前缀你可以通过修改解决)

2.onethink的分页

你可以参考onthink 的ConfigController里的内容 它实现分页是通过红线标出的这一句继承自AdminController 里的lists你可以查看它使用方法这里有更为详细的介绍可以自己去实例化lists

3.onethink给的增删改例子都是在mysql下的这里提供在mongo下的增删改供参考

增:

(1)如果你也是将edit和add用一个页面采用在表单里隐藏_id的方法 注意这里有坑先看一下下面的edit的实现由于create方法创建时会把表单里的隐藏的空的_id(如果你name里不用_id那就会在新增时新创建这个为空的垃圾字段)拉过来导致数据新增失败这里采用在Model里写:

或者使用field方法详细介绍见这里

后台新增方法:

注意这里如果你想获得插入的id可以通过下面的方法 我是用$id = $book->add()返回是空

删:

onethink给的menu和config都有点问题这里给出我的

界面显示效果:

批量删除按钮:

需要批量删除的对象name命名和进行单一删除对象命名一个是id[]另一个是id

后台删除方法:

改:

前台:这里貌似一定要使用_id

后台方法:

 

 4.样式修改

onethink 里a 标签实现鼠标放上去显示下划线使用的是border-bottom的方式 使用border:none 进行覆盖 text-decoration:none 是无效的   这个坑 坑了我好久wtf

onethink入门笔记(一)的更多相关文章

  1. onethink入门笔记(二)

    5.onethink页面端获得后台服务器传值的方法 1:一般后台通过assign的值前台通过{$value}显示出来; 2:如果需要在js中使用 则可以通过 在js中写 var m = "{ ...

  2. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  3. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  4. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  5. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  6. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  7. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  8. OpenGLES入门笔记四

    原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...

  9. OpenGLES入门笔记三

    在入门笔记一中比较详细的介绍了顶点着色器和片面着色器. 在入门笔记二中讲解了简单的创建OpenGL场景流程的实现,但是如果在场景中渲染任何一种几何图形,还是需要入门笔记一中的知识:Vertex Sha ...

随机推荐

  1. hadoop 集群跑的时候用到hbasejar 文件的引用问题

    1. 创建软连接 ln -s /home/hadoop/bigdater/hbase-0.98.6-cdh5.3.6/conf/hbase-site.xml ./hbase-site.xml(记得这里 ...

  2. 替换节点及replaceEach方法

    需求: 为所有的 li 节点添加 onclick 响应函数实现 city 子节点和 game 子节点对应位置的元素的互换 window.onload = function(){ //自定义互换两个节点 ...

  3. jd-gui报错INTERNAL ERROR 解决办法

    问题:我用dex2jar工具反编译了apk文件,但当我用jd-gui反编译前面操作获得的jar文件的时,能很完美地看到大部分类反编译后的代码,但有一部分类不能显示出来--constants类,仅仅显示 ...

  4. SQL 行转列和列转行2

    DECLARE @T TABLE (columnName varchar(100) NOT NULL PRIMARY KEY); INSERT INTO @T SELECT columnName fr ...

  5. maven 私服搭建

    1,下载 https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.2-01-bundle.zip 2,解压 3,安装 ...

  6. 富文本编辑器防止xss注入javascript版

    富文本编辑器:ueditor 其实富文本编辑器已经有防止xss注入功能,但是你服务端程序在接收的时候在做一次转义,否则有可能然后前端验证直接提交数据导致被xss攻击. 为了节省后端程序开销则在前端 显 ...

  7. tar 命令详解

    tar命令[root@Linux ~]# tar [-cxtzjvfpPN] 文件与目录 -C 目标目录(注:解压时)参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个 ...

  8. [IDEA] IDEA 集成PlantUML

    在windows下,idea 集成plantuml:1. 首先安装好 graphviz,官网地址:http://www.graphviz.org/Download..php,下载合适的包即可.wind ...

  9. 【学】AngularJS日记(1) - 常用工具

    angular.isArray(a) 判断a是否为数组 angular.isDate 是否为时间对象 angular.isDefined 判断元素是否存在 angular.isUndefined an ...

  10. MVC4 +EasyUI 使用TreeGrid 方法

    用easyui已经有2年了,换了新环境,要求用mvc开发,所以想把原来的项目直接用mvc重构. 在使用TreeGird的时候出现了问题,发现在转换为treegrid的json 很费劲,一直都是用的ea ...