OneThink模型管理详解.doc_第1页
OneThink模型管理详解.doc_第2页
OneThink模型管理详解.doc_第3页
OneThink模型管理详解.doc_第4页
OneThink模型管理详解.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OneThink模型管理详解 /onethink_model_manage/本文为原创,根据自己在使用onethink创建web应用时的真实经历撰写而成。请支持本人版权,转载时注明出处。仅为经验分享,不代表权威,不完善不准确之处欢迎纠正,有任何问题可对本文留言。1.1.1 Onethink模型管理是什么?如何工作的?如何调试?Onethink可以让你图形化的创建新模型,创建对应的SQL表,并且记录模型的所有属性,于是可以在【模型管理】中查看-编辑模型属性-字段,以及查看该模型的所有数据。Onethink通过ThinkController以及ModelModel来实现对这些模型的管理-编辑-新增-删除-数据展示-数据删除-数据新增等功能。更为重要的是,你也可以在Admin下调用这些现成的功能。比如说你的系统肯定要为客户提供一个管理员后台界面,里面要对某些业务表的数据进行展示-编辑-新增-删除。你可以让你的Controller继承ThinkController,view复制Think目录下的内容,无需Model,功能就做好了。(后面会提供一个例子来说明)需要注意的是,Onethink的模型管理不会为你创建Controller/Model/View这些文件,你可以手动创建需要的东西来完全控制你的模型。Onethink模型管理的原理就是,你通过模型管理界面创建了模型,Onethink会把模型相关的信息存储在onethink_model以及onethink_attribute 中。通过ModelModel获取该模型的各种属性和配置,通过ThinkController完成对该模型的展示-新增-删除-更新控制。各种操作的表单提交使用Jquery的Ajax,在js中有各种实现。操作结果的提示通过AjaxReturn显示在Admin顶部的一个hidden div中,1500毫秒后消失。即便是$this->success/error也是这样。因此跟Home下各种提示会跳到一个新页面是不同的。非常需要注意的是,trace和dump会影响Ajax对response的解析,你会发现某些提交死在那里,打开Firebug-网络-Post-响应,会看到parser XXXX错误提示,就是这个原因。关闭调试模式,去除trace和dump会让一切回归正常。那如何调试?你可以把需要跟踪的变量记录到log中,ThinkLog:record(Team->del: .$var,DEBUG);,打开RuntimeLogsAdmin今天的log文件,最下面就是最近的log信息。你也可以通过$this->error/success输出调试信息。对于array类型的变量你可以ob_start();var_dump($variables); $data = ob_get_clean(); $data即为array详细信息字符串(用了ob操作让var_dump的结果返回到$data而不是客户端)你还可以$returnstatus = 0; $returninfo = mydebug: .$var; $this->ajaxReturn($return);注意第二种第三种方法都会影响逻辑的继续执行,一般用在分步骤快速调试。1.1.2 如何用Onethink模型管理快速创建新模型-实战案例-包括分析系统-模型管理-新增:创建一个新模型,可以是基于原有文档模型,也可以是新的独立模型。如果模型有标题-内容-封面图-评论-浏览数等属性,就最好基于文档模型,添加自己特殊的字段,复用原来的字段,多余的基础字段不用就是了,虽然浪费了一些存储,但可以reuse框架关于文档模型的很多功能。如何新增一个独立模型?系统-模型管理-新增:【模型标识】就是数据表的名字-英文,【模型名称】就是显示在模型管理中的名称-中文,引擎选MyISAM,主键yes,确定后,该模型信息会存储在onethink_model中,由onethink统一管理。此时模型对应的MySQL数据表还没有建立,因为还没创建字段。选该模型最右边的【编辑】,进入【设计】页,【字段管理】-新增,【字段名】就是SQL数据表的字段名-英文,【字段标题】是字段在Onethink框架里显示的名称-中文,【字段类型】根据需要选择,【字段定义】一般为空,也可以count或sum,枚举/多选字段的可选项在【参数】中设置,0:选项1(换行)1:选项2以此类推,分隔符是英文的冒号。【字段备注】会显示在表单该字段上。【表单显示分组】是指在编辑或新增该模型数据的界面中可以分成几个tab来显示各个字段。比如你新建的是一个存储配置的模型,可以分成基础配置,高级配置,系统配置三个界面分别显示不同level的字段。1:基础配置,2:高级配置,3:系统配置,分隔符是英文的冒号和逗号。【表单显示排序】用来规划各个字段在新增/编辑界面中的显示顺序,以及分组(如果配置了刚才的分组)。字段创建的顺序无法修改,在【字段管理】中能看到,但是显示的顺序你可以调整。【列表定义】是指onethink如何显示该模型的每个字段的数据,可以原样显示,可以获取数据后调用函数显示返回结果,还可以添加edit/del这些操作链接。具体请看onethink自身的document模型的配置,或者下面的实例。在【高级】页面中还有各种操作的模板定义,用来告诉Onethink在模型管理中如果点开了该模型的展示-编辑-新增界面,该如何显示。以上所有信息都会存储在onethink_attribute中,由onethink统一管理,于是onethink可以图形化的提供对于该模型的各种功能。对应的MySQL数据表已经创建,暂时没有数据。没有生成对应的Controller/Model/View,onethink通过ThinkController以及ModelModel以及Think/View来完成该模型的各种操作。来看一个例子,新建了一个team模型,存储团队成员信息,包括成员名称,成员昵称 新增模型数据模型管理-该模型右侧-数据当前是空的,没有数据,但是所有的列都展示出来了,此时onethink就是根据你当时创建该模型时定义的各种字段及其属性,以及【列表定义】的配置,完成数据的展示。新增,出现新增页面,此时Onethink就是根据你当时创建该模型时定义的【表单显示分组】【表单显示顺序】,完成该表单的展示。填好数据,点确定,此时Onethink通过Ajax提交给【s=/Think/add/model/7.html】完成数据新增操作(7是该模型的编号,在模型管理中可以看到),操作完成后通过Ajax Response返回结果提示,js的updateAlert会获取提示信息,显示在之前隐藏的top_alert div中。查看网页源代码搜索top_alert你可以看到这个隐藏的div id=”top-alert”。这个div是在AdminViewPublicbase.html中定义的,Admin下的所有view/*.html都是extend这个基础模板。因此如果你遇到提示出不来,但是response又确实解析正确,可以看看是不是没有extend基础模板。新增的bug:如果你在新增页面点击返回,应该是不起作用。(我用的1版本是这样的)打开AdminViewThinkadd.html找到<a class=”btn btn-return” href=”javascript:;”>返 回</a>,可以看到href是空的js,修改为<a class=”btn btn-return” href=”javascript:history.back(-1);”>返 回</a> 就ok了。为该模型定制一个管理TAB到目前为止,我们通过Onethink的模型管理轻松的创建了一个新的Model,添加了数据,通过模型管理可以很容易的维护它。Very good。但是我们不会为客户提供这个管理界面不是么?所以要定制一个管理TAB,未来放到为客户定制的管理页面中,接下来的实战中你会深入理解如何重用Onethink的代码加速你的开发。Onethink不仅为你提供了一个框架,可以图形化的轻松操作一切,还为你提供了很多模块可以重用,因为它既然可以做到,你就可以resue它为你服务。系统-菜单管理-新增:标题-团队,排序-0,链接-Team/Index,上级菜单-顶级菜单,说明-团队成员配置于是,管理页面顶部,最左边,多了一个【团队】TAB。它会调用Team/Index,但是现在它还不能工作,因为没有对应的ControllerApplicationAdminController新建TeamController.class.php,它要继承ThinkController,代码少得难以想象。<?php/ +-/ | OneThink WE CAN DO IT JUST THINK IT / +-/ | Copyright (c) 2015 All rights reserved./ +-/ | Author: 原子力量 <>/ +- namespace AdminController; /* 团队成员控制器* author 原子力量 <>*/class TeamController extends ThinkController /*注意是继承ThinkController而不是AdminController*/private $model_name = team; /*在OneThink模型管理中查看自己模型标识(不是名称)修改此处*/ /* 团队成员管理首页* author 原子力量 <>*/public function index()$this->lists(); /*系统会调用View/Team/index.html来显示*/ public function lists( $model = null )parent:lists( $this->model_name ); /*系统会调用View/Team/list.html来显示*/ public function add( $model = null )$model = M(Model)->getByName( $this->model_name ); /*通过Model名称获取Model完整信息*/parent:add( $modelid ); /*系统会调用View/Team/add.html来显示*/ public function edit( $model = null, $id = 0 )$id | $this->error(请选择要编辑的用户!);$model = M(Model)->getByName( $this->model_name ); /*通过Model名称获取Model完整信息*/parent:edit( $

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论