TP工具箱升级了,支持TP1.6的项目

昨晚花时间在tdweb修改版的基础上又修复了一些其他问题。使用TP1.6的项目,也可以用工具箱来管理了。

以前工具箱日志的相关链接:http://yhustc.com/Blog/162.html

新版工具箱可以到TP论坛去下载。http://bbs.thinkphp.cn/viewthread.php?tid=4973&extra=page%3D1

Tags: thinkphp,工具箱

ThinkPHP论坛用户注册恢复正常了

升级到7.0的时候出了问题,导致用户注册的时候数据只添加到UCenter里面了,Discuz的用户表里面没有数据。现在已经搞好了。4月1号以后注册的用户,可以直接登陆。O(∩_∩)O哈哈~

Tags: thinkphp

TP工具箱升级为项目管理器

很早就开始搞啊搞,做了一些小功能,比如什么TP项目中支持正则的全文搜索一类的,但是因为都没花时间搞,所以一直拖,搞啊搞的不少代码都不知道搞哪去了。

今天花了点时间把工具箱升级一下,可以当项目管理器使,项目新建与浏览激活后进行管理。Model生成的内容更加详细,给定Model可以选择对应的数据表字段生成自动填充与校验的规则等。

其他的就没啥了,全文搜索就不加了,推荐一个工具,search and replace,相当好使。

查看flash演示请移步至 http://www.yhustc.com/TPToolBox/ 

下载地址 TPToolBox.rar

Tags: thinkphp,工具箱

如何使用Thinkphp快速开发 系列教程(1)

看完标题就知道这东西跟PHP有关,所以如果你是做PHP开发的,不管你是否对使用框架有兴趣,我建议你也可以了解一下这个框架。使用框架快速开发是我们的目的,但不是最终目标,应该学习框架架构的思想,深入了解它实现的机理。我对Thinkphp的了解来自与9月分程序员杂志的介绍,于是到它的官方网站看了一下,还真是个好东西。引用一小段关于该框架的说明:“ThinkPHP从Java的Struts结构移植过来,使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,借鉴了国外一些不错的思想,尤其是Java框架方面,因此熟悉J2EE的开发人员相对比较容易上手,其模版引擎、缓存机制、认证机制和扩展性方面均表现不凡。在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、Oracle,以及PDO的支持,让你有更多选择。”

开始学习之前,我想先说明几点:


  1. 我是第一次写教程,写的烂或表述不清的话,请给我提意见,但不要骂我,谢谢。
     
  2. 本文假定你已经对thinkphp有了一个初步的认识,最起码如何安装,如何登录管理后台你应该是知道的。
     
  3. 这个教程所使用的demo是一个新闻系统,所以不可能面面俱到,所以读者应该在教程中更多的关注我解决问题的方法而不是这个问题的答案,这样你才能自己学会去研究它。
     
  4. 本文假定你已经有PHP、数据库的基础知识,对面向对象编程有一定了解,如果这些你还不具备,建议你先看看基础知识。
     
  5. 看这个教程前,建议你先看看thinkphp的官方手册,不管能不能看明白,先过一遍,这样我在说起一些概念的时候你能够知道我在说的什么东西。
     
  6. thinkphp框架集成了RBAC权限控制,但是由于这个demo的管理后台不需要做到操作级的权限控制,所以没有使用RBAC,而是选择了通过类的继承来实现模块级的权限管理。RBAC在这个教程中不打算讲述,以后用到了再写,或者你可以跟我联系讨论RBAC权限控制的问题。
     
  7. 有的地方我会结合thinkphp内部实现来讲解,如果你对它内部如何实现的不感兴趣,可以跳过,不影响下面的阅读。
     
  8. 已经有网友提供过入门的demo,我发现其中有一些小问题,遂撰文陈述一些我的理解。
     


本文的一些约定:


  1. 假设你的thinkphp压缩包解压后在web主目录的thinkphp目录下,即使用http://localhost/thinkphp你应该可以看到压缩包自带的那个demo,使用http://localhost/thinkphp/admin你应该能够看到管理后台的登录界面。thinkphp的核心部分存放在thinkphp解压目录的ThinkPHP目录下,以后使用大写的THINKPHP来代表这个目录,比如Action基类的文件就存放在THINKPHP/Lib/Think/Core目录下。
     
  2. 约定前台网站项目名为website,也就是说使用http://localhost/thinkphp/website你可以看到新闻列表
     
  3. 约定后台管理系统项目名为webadmin,使用http://localhost/thinkphp/webadmin进入管理程序
     
  4. 所有文件默认使用UTF-8保存,如果你的实现出问题了,请先检测一下是否是字符集问题
     


要构建一个带后台的新闻系统,首先明确需求是什么,然后根据需求设计数据库。因为我们的demo只需要实现一个带后台管理的新闻系统,所以新闻表和用户表就足够了。新闻表是前台网站和后台管理系统共用的,但是前台网站只对其有查询权限。后台管理系统对新闻和用户表有完全的管理权限。

新闻表:CREATE TABLE `prefix_news` ( //prefix替换成你使用的前缀
`id` int(11) NOT NULL auto_increment, //主键,自增的INT型
`up` char(1) NOT NULL default '0', //是否置顶,0表示不置顶,1表示置顶
`title` varchar(255) NOT NULL, //标题
`content` text NOT NULL, //内容
`author` int(11) NOT NULL, //作者,与user表的id对应
`date` date NOT NULL, //发布日期
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='新闻表' AUTO_INCREMENT=1 ;

用户表:由于不使用thinkphp框架集成的RBAC权限控制,所以用户表可以自己随便设计。

CREATE TABLE `prefix_user` (
`id` int(11) NOT NULL auto_increment, //主键ID
`username` varchar(50) NOT NULL, //用户名
`password` varchar(50) NOT NULL, //密码
`opuser` char(1) NOT NULL default '0', //是否运行操作其他用户,0表示不允许,应为只有两个权限级别,所以没有必要再建一个用户类型表
`lastlogin` varchar(255) default NULL, //上次登录时间,我没有使用datetime,请不要惊讶,呵呵
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

使用thinkphp的后台管理系统添加节点(也就是webadmin),创建项目,你会发现thinkphp的文件夹下已经多了一个webadmin的文件夹,项目需要使用的一些目录已经全部给你建好了。关于这些目录是干什么用的,请自己参考thinkphp的手册。

如果你的新闻表使用thinkphp相同的表前缀保存在thinkphp相同的数据库中,那么点击节点名称webadmin,进入模块添加的页面自动创建Action、Dao和VO类,否则可以跳过这一段,下一段我们裸写Action、Dao和VO类,但我建议看过这一端的朋友还是看看下一段。所谓模块,其实就是你要操作的对象,比如你现在要操作的是新闻栏目,那么你可以添加名称为News的模块(名字一定要跟你操作的数据表的出去prefix_的名字对应),这样就可以使用http://localhost/thinkphp/webadmin/index.php/news来访问新闻模块了。项目首页模块请使用Index命名,因为默认http://localhost/thinkphp/webadmin/index.php会调用Index模块。定义好模块后点击模块的名称,进入添加操作的页面。这里添加的所有操作都是对模块而言的,比如你要对新闻进行列表操作,那么添加名为index(名字自己随便取,但最好是使用框架默认的那几个名字,使用自己的实现覆盖默认的操作)的操作,之后定义好index的实现,那么通过地址http://localhost/thinkphp/webadmin/index.php/news/index你就可以看到新闻列表啦。定义好add(显示添加新闻的页面),edit(显示修改新闻的页面),insert(添加新闻到数据库),update(保存修改到数据库),delete(删除表项)等操作后,返回到模块列表,点创建,然后到你的thinkphp/webadmin/Lib目录下看看,NewsVo、NewsDao、NewsAction三个类已经给你自动创建了,刚才定义的News模块的各个操作,也在NewsAction类中自动创建了,问我这三个类都是干嘛的?你还是自己看手册吧。

上面的那个自动创建虽然高级,但是如果项目的数据库与thinkphp使用的数据库不在一个库里,自己使用的前置也和它不一样(对于多个项目,这是常有的),所以自己动手裸写才是王道。从最简单的开始,在thinkphp/webadmin/Lib/Dao目录下建个NewsDao.class.php,内容嘛,下面一句就够了。
 

class NewsDao extends Dao
{
}
?>

然后是定义VO,VO其实很简单,把数据表翻译过来就OK了

Tags: thinkphp