使用ThinkPHP框架快速开发网站(多图)
ThinkPHP教程_PHP框架之ThinkPHP(一)【入门和介绍、ThinkPHP版本。。。
ThinkPHP教程_PHP框架之ThinkPHP(⼀)【⼊门和介绍、ThinkPHP版本。
⼀、什么是框架 就是别⼈写好的⼀批类和⼀个规则注意,不仅仅是在学习中,更是在以后的⼯作中,在选择框架的时候,不要⼀味地追求"⼤"、"全",⽽是要根据当时项⽬的需要选择合适的框架 1、MVC模式 M Model 模型 就是数据库操作类(通过数据库操作类去操作各个表) V View 视图 模板 C Controller控制器 控制器来实现模板、模型之间的控制关系 控制器也是⼀个类,这个类中有不同的⽅法,所以控制器也叫模块(Module),其中的⽅法叫动作(Action)! 那么问题来了,视图是如何告知哪个控制器(模块)去执⾏哪⼀个⽅法(动作)呢?结果是URL ⽐如说在⼀个项⽬中有如下两个模块 ⽤户管理 (⽤户注册、⽤户修改、⽤户删除、⽤户编辑) 商品管理 (⽤户下单、修改订单、取消订单)⼆、ThinkPHP框架 1、具有⽐较好的跨平台性 ⽆论是服务器平台(Linux、Windows、Unix)还是服务器软件(Apache、IIS、Nginx),都能良好的⽀持 2、⽂件名⼤⼩写问题 Windows中的⽂件名是不区分⼤⼩写的,⽽Linux和Unix中的⽂件名是区分⼤⼩写的!那么就可能在平台移植过程中,出现⽂件找不到的情况,⽽ThinkPHP很好的解决了这个问题,只要在ThinkPHP中开启了APP_DEBUG,即调试模式,那么即使在Windows下开发,ThinkPHP就已经严格区分了⼤⼩,这就从源头上解决了平台移植⼤⼩写的问题! 3、URL⽀持多种模式 共有4种模式,⽅便SEO 4、⽀持⾃动加载、动态编译 节约系统开销 5、AJAX⽀持、视图、分组、权限管理、关联操作、主从数据库、缓存(apc、db、memcache、shmop、xcache、file) 6、⾃动验证、⾃动完成、映射 7、加载第三⽅类库三、ThinkPHP版本和⽂件夹规范 1、官⽹: 2、软件开发阶段 A alpha 内部测试 B beta 公开测试 C RC 开发倒计时(该阶段已经将重⼤和重要的BUG进⾏了修复,仅仅会有⼀些⼩的使⽤性上⾯的⼩bug) D final 正式发⾏版本 3、ThinkPHP版本 基础阶段学习的是2.1RC版(⽬前(2016-08-18)在官⽹上已经没有2.1RC版了,只有2.1正式版),所以使⽤的是2.1正式版 ThinkPHP有核⼼包和完整包之分,完全开发⼿册有PDF、swf、CHM版,还有ThinkPHP的API⼿册 核⼼包 仅仅包含ThinkPHP运⾏的最主要⽂件(不包含扩展类、⽰例、⽂档)(ThinkPHP_2.1_core.zip) 完整包 核⼼包的基础上增加了扩展类、⽰例、⽂档 ps,其实2.x版本的完整包是有带⽰例和⽂档完整包(ThinkPHP_2.1_full.zip)和带扩展、⽰例和⽂档完整包(ThinkPHP_2.1_full_with_extend.zip)之分的,但是在3.x以及5.x版本中,完整包就没有分两种了(统⼀叫ThinkPHP_3.1.3_full.zip) 注意,核⼼包仅仅只有⼀个ThinkPHP的核⼼⽬录,⽽且完整包和核⼼包的ThinkPHP⽬录也是不⼀样的!完整包的ThinkPHP⽬录中的Vender⽬录下是有很多扩展类的,⽽核⼼包的ThinkPHP⽬录中的Vender⽬录是空的;完整包的ThinkPHP⽬录中的Lib⽬录下是有⼀ORG⽬录的,⽽核⼼包是没有的! ⽂档下载 4、⽂件夹规范 ThinkPHP的⽂件夹规范分两⼤块,⼀个是系统⽬录结构、⼀个是项⽬⽬录结构 ·系统⽬录结构 #ThinkPHP.php⽂件:项⽬初始化时,单⼀⼊⼝⽂件必须引⼊的⼀个⽂件,因为系统⽬录必须通过这个⽂件查找 #Common⽬录:⼀些公⽤的函数,⽐如说D()、F()等等;其中的convention.php包含ThinkPHP中所有的配置⽂件需要⽤到的东西等等 #Lang⽬录:语⾔包,就是将ThinkPHP可能产⽣的⼀些错误和异常与对应的⽂字说明做⼀个映射。
Web开发项目实战教程(ThinkPHP6)第2章 构建前端界面
<div class="container"> <div class="row"> <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"></div> <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"></div> </div>
第 2 章 构建前端界面
8
2.1 界面设计思路
2.1.4 构建调试环境
步骤03:命名项目根目录下的.example.env文 件名为.env,该文件保存了当前项目的环境变 量,可以在任意PHP代码中通过Env::get('')来 取得其中的值。但是当前不是为了取值,而是 为了打开项目的调试模式。打开调试模式后, 代码出错了可以看到更详细的错误信息。
(2)通过模板引擎来渲染页面 内容。页面内容生成的不是完整 的HTML源代码,而是HTML标 签夹杂着模板引擎标记,由后台 服务器生成完整的HTML页面再 响应给前端浏览器。
(3)通过Ajax实现完全的前后 端分离,后台服务器只接收请求 并返回JSON数据,不负责前端 界面的构建。当前端获取到后台 的JSON数据后,再通过 JavaScript代码或框架进行内容 的填充。
步骤02:请读者根据图左侧项目导航窗格所示的目录结 构将所需资源进行保存。其中特别说明public目录,这个 目录是项目的二级目录,通常用于保存静态资源文件, 请不要将PHP源代码保存到该目录下,除非很清楚自己 的目的。在XAMPP配置中可以看到,public目录是作为 XAMPP的根目录进行配置的,所以可以正常访问。而其 他的所有目录和文件的访问方式,ThinkPHP都已经在框 架中进行了约定,不需要暴露给XAMPP和外部访问者。
如何用PHP开发一个完整的网站
如何用PHP开发一个完整的网站1、PHPer应具备的知识(1)PHP知识:熟练掌握基础函数,PHP语句(条件、循环),数组(排序、读取),函数(内部构造),运算(数学逻辑),面向对象(继承接口封装多态静态属性)等。
了解Cookie或者Session一种机制了解一种模板操作机制和使用手头收藏一些好的常用类或方法,能提高我们的开发的速度。
如:分页、上传、字符过滤、数据库操作、生成HTML、文件操作等。
(2)HTML知识(3)JavaScript事件处理(4)数据库知识:SQL语句“增删改查”会使用一种SQL工具2、PHP开发的一般流程(1)尽量完整的需求方案,具体到功能上:(2)建模结构UML(3)建立数据库:1、建立的表名、字段名要与他的功能有关系。
2、根据结构建立数据库表,原则是不定项内容一定要分表。
3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date(4)设计HTML文件和脚本的实现根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。
设计页面时要考虑到每个细节,包括提示消息页面,错误页面。
(5)PHP代码的书写1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)2、基础功能分类关联,以便今后代码引用。
3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。
4、在部分关键位置加以代码注释。
(6)程序的测试和修正1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。
避免收之东隅收之桑榆。
2、对于解决过的BUG已经要详细记录,以便日后更新。
3、多人开发应该注意什么使用版本服务器:CVS、SVN...功能:1、单个文件历史版本的记录和恢复2、文件的锁定和更新3、单个或多个文件程序之间的沟通4、保护程序的安全性不受单个程序的误操作而丢失。
thinkphp concat用法-概述说明以及解释
thinkphp concat用法-概述说明以及解释1.引言1.1 概述文中所提到的ThinkPHP是一种基于PHP语言的开源Web应用框架,它提供了一套丰富的功能和工具,方便开发者快速构建高性能的Web应用程序。
作为开发者,我们使用ThinkPHP可以极大地提升开发效率,减少开发周期。
ThinkPHP以简单易用、灵活性强、安全可靠等特点而闻名,因此在国内外都有广泛的应用和大量的用户。
它采用了MVC(Model-View-Controller)的设计模式,将应用程序的各个组件分离,使得代码的重用性更高,开发的应用程序更易于维护和扩展。
在ThinkPHP中,我们经常会使用到一种函数,即Concat函数。
Concat函数是指将多个字符串连接起来,形成一个较长的字符串。
这在处理字符串的操作中非常常见,例如将用户名和密码进行连接后,用于数据库查询验证。
ThinkPHP提供了便捷的Concat函数来实现这一功能。
通过在ThinkPHP中使用Concat函数,我们可以轻松地实现字符串的拼接,并且还可以对连接的字符串做一些处理,例如在连接的字符串中添加分隔符或者其他修饰符。
这给我们的应用程序开发提供了更多的灵活性和便利性。
在接下来的内容中,我们将介绍Concat函数的具体用法和应用场景,以及如何在ThinkPHP中利用这个函数来提高开发效率和实现更加灵活的字符串处理。
通过深入了解并熟练掌握Concat函数的用法,我们可以更好地应用到实际的开发中,提高代码的质量和可维护性。
在下一节中,我们将进一步介绍ThinkPHP的概念和特点,以便读者更好地理解和掌握相关知识。
请继续阅读后续内容,以获取更多关于ThinkPHP和Concat函数的详细信息。
1.2 文章结构文章结构是指文章的组织和布局方式,它可以帮助读者更好地理解文章的内容和逻辑结构。
一个良好的文章结构应该清晰、有序,并且能够合理地组织和呈现文章中的各个部分。
ThinkPHP3.1快速入门系列教程
ThinkPHPThinkPHP3.1快速入门教程系列ThinkPHP3.1快速入门(1)基础 (2)ThinkPHP3.1快速入门(2)数据CURD (10)ThinkPHP3.1快速入门(3)查询语言 (18)ThinkPHP3.1快速入门(4)连贯操作 (30)ThinkPHP3.1快速入门(5)变量 (40)ThinkPHP3.1快速入门(6)路由 (44)ThinkPHP3.1快速入门(8)视图 (51)ThinkPHP3.1快速入门(9)变量输出 (56)ThinkPHP3.1快速入门(1)基础简介ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。
目录结构ThinkPHP最新版本可以在官方网站(/down/framework.html)或者Github (https:///liu21st/thinkphp/downloads)下载。
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以),框架的目录结构为:1├─ThinkPHP.php 框架入口文件2├─Common框架公共文件3├─Conf框架配置文件4├─Extend框架扩展目录5├─Lang核心语言包目录6├─Lib核心类库目录7│├─Behavior核心行为类库8│├─Core核心基类库9│├─Driver内置驱动10││├─Cache内置缓存驱动11││├─Db内置数据库驱动12││├─TagLib内置标签驱动13││└─Template内置模板引擎驱动14│└─Template内置模板引擎15└─Tpl系统模板目录注意,框架的公共入口文件ThinkPHP.php是不能直接执行的,该文件只能在项目入口文件中调用才能正常运行(后面会讲到),这是很多新手很容易犯的一个错误。
PHP教程54-ThinkPHP(1)
PHP教程54-ThinkPHP(1)目录一、简介1、什么是ThinkPHP2、什么是框架3、什么是MVC4、介绍thinkphp5、快速入门二、控制器1、什么是控制器2、定义控制器3、 url调度模式4、空操作5、空模块6、项目分组7、 url大小写8、页面跳转9、页面重定向三、视图1、什么是视图2、模板定义3、分隔符4、模板赋值与输出5、模板字符串替换6、获取内容一、简介1、什么是ThinkPHP它是一个MVC框架2、什么是框架框架,即framework。
其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。
l Zend Frameworkl Yiil Symfonyl Codelgniterl ThinkPHPl ……3、什么是MVCMVC是施乐帕克研究中心(Xerox PARC)在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
使用MVC应用程序被分成三个核心部件:模型、视图、控制器。
M:Model模型V:View视图C:Control 控制器快速入门控制器视图模型实用项4、介绍thinkphpll 下载thinkphp3.0l 直接部署到项目中l php5.2thinkphp1.0 php5.0thinkphp3.0 php5.2thinkphp3.2.2 php5.3项目布署流程:1)解压thinkphp,并进入到解压出来的文件夹2)将ThinkPHP文件夹放在我们的项目中5、快速入门1)开发项目入口文件2)运行以上程序,自动创建相应的程序文件看到以上界面,说明项目创建成功在我们的项目中,自动产生了一些文件夹,如下图所示:l Common 项目公共文件目录l Conf 项目配置目录l Lang 项目语言包目录l Lib 项目类库目录l Tpl 项目模板目录l Runtime 项目运行时目录l ~runtime.php 这个文件会自动将项目的当前配置、公共函数等程序编译到这个文件中,下次程序运行时,直接运行这个文件即可。
ThinkPHP新闻发布系统(前台+后台)
使用ThinkPHP框架快速搭建网站这一周一直忙于做实验室的网站,基本功能算是完成了。
比较有收获的是大概了解了ThinkPHP框架。
写一些东西留作纪念吧。
如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖。
以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码。
做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼。
所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了。
我选择的是PHP的ThinkPHP框架。
说实话,真的蛮不错的。
瞬间觉得Web开发还是蛮有效率的。
超级链接:ThinkPHP中文网按照套路,首先贴一下实验环境:∙ 1. WAMP(集成的那种,最Easy的几乎不需要配置)∙ 2. ZendStudio7.2(中文网址/,里面提供下载,在线注册机以及使用教程)∙ 3. ThinkPHP框架+百度UEditor编辑器插件∙ 4. Win7-64bit操作系统5. 浏览器(火狐,IE,Chrome),外加火狐FireBug插件用于调试以及偷样式-------------------------------------------------------------华丽分割-------------------------------------------------------------第一步:找网页模板(不会美工,PS,见谅。
)前端页面我找的是一个大学的实验室,这里就不贴了,很普通的那种。
后台直接下载的模板,感觉蛮漂亮的,运行后如下图:第二步:初识百度UEditor插件由于我要做的是实验室的网站。
实验室网站主要内容在如下几个方面:∙介绍实验室的成员∙实验室的项目,成果等实验室的新闻以及学术交流信息可见,信息主要偏重于后台的新闻,文章信息的发布,而前台几乎不存在编辑。
所以重点要在后台实现一个方便的文章发布体系。
thinkphp框架文章发布功能 开发的方法
thinkphp框架文章发布功能开发的方法
要开发一个文章发布功能,你可以使用ThinkPHP框架中的以
下步骤进行开发:
1. 创建数据库表:首先,你需要为文章发布功能创建一个数据库表。
表可以包含标题、内容、作者、发布时间等字段。
2. 创建模型:使用ThinkPHP框架的模型功能,创建一个与文
章相关的模型。
这个模型可以定义与数据库表的关联关系,以及一些常用的数据库操作方法。
3. 创建控制器:创建一个控制器用于处理文章发布功能的逻辑。
在控制器中,你可以处理用户提交的文章数据,调用模型的方法将数据保存到数据库中。
4. 创建视图:创建一个视图用于展示文章发布表单。
在视图中,你可以使用HTML和ThinkPHP的模板语法来设计一个用户友好的表单界面。
5. 表单验证:对用户提交的数据进行验证,确保数据的完整性和正确性。
你可以使用ThinkPHP的表单验证功能来进行验证。
6. 提交表单:在视图表单中设置一个提交按钮,在用户点击提交按钮时,将用户输入的数据提交到控制器中进行处理。
7. 文章列表页:开发一个文章列表页面,用于展示已发布的文章信息。
你可以在控制器中查询数据库中已发布的文章,然后
将数据传递给视图进行展示。
8. 文章详情页:开发一个文章详情页面,用于展示指定文章的详细内容。
你可以在控制器中根据文章ID查询数据库中对应的文章内容,然后将数据传递给视图进行展示。
以上是一个简单的开发思路,你可以根据具体需求进行适当的修改和扩展。
thinkphp 利用模板语言开发网页
配置
读取配置
无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法(可以借助Config单词 来帮助记忆)来读取已有的配置。
获取已经设置的参数值:C('参数名称') 例如, $model = C('URL_MODEL');
动态配置
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些 参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数。 设置新的值: C('参数名称','新的参数值'); 例如,我们需要动态改变数据缓存的有效期的话,可以使用 // 动态改变缓存有效期 C('DATA_CACHE_TIME',60);
架构
兼容模式
兼容模式是用于不支持PATHINFO的特殊环境,URL地址是: http://localhost/?s=/home/user/login/var/value 可以更改兼容模式变量的名称定义,例如: 'VAR_PATHINFO' => 'path'
PATHINFO参数分隔符对兼容模式依然有效,例如: // 更改PATHINFO参数分隔符 'URL_PATHINFO_DEPR'=>'-', 使用以上配置的话,URL访问地址可以变成: http://localhost/?path=/home-user-login-var-value 兼容模式配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。 例如,我们在Apache下面的话,.htaccess文件改成如下内容: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L] </IfModule> 就可以和REWRITE模式一样访问下面的URL地址访问了: http://localhost/home/user/login/var/value
thinkphp6操作手册
thinkphp6操作手册ThinkPHP 6是一个流行的PHP开发框架,提供了许多功能和工具,帮助开发者快速构建Web应用程序。
以下是ThinkPHP 6操作手册的简要概述,帮助你了解如何使用ThinkPHP 6进行开发:1. 环境准备:确保你的服务器或本地环境安装了PHP版本或更高版本。
安装Composer依赖管理工具,以便于安装和管理ThinkPHP框架的依赖项。
2. 创建新项目:使用Composer创建一个新的ThinkPHP 6项目。
在命令行中运行以下命令:```php`composer create-project topthink/think tp6````3. 项目目录结构:项目根目录:包含公共文件和资源。
app目录:应用程序的核心代码目录,包括控制器、模型、视图等。
think目录:ThinkPHP框架的核心代码目录。
4. 路由配置:在`route`目录下的``文件中配置路由规则。
可以定义不同的路由规则来匹配不同的URL模式,并指定相应的处理逻辑。
5. 控制器创建:在`app`目录下的`controller`文件夹中创建控制器类。
控制器用于处理业务逻辑,可以定义不同的方法来处理不同的请求。
6. 模型创建:在`app`目录下的`model`文件夹中创建模型类。
模型用于与数据库进行交互,可以通过定义不同的方法来实现对数据库的操作。
7. 视图渲染:在控制器中可以使用`view`方法来渲染视图。
可以将数据传递给视图,并在视图中进行展示。
8. 数据库操作:使用ThinkPHP框架提供的数据库操作方法,可以在模型中执行查询、插入、更新和删除等数据库操作。
9. 缓存管理:ThinkPHP框架提供了缓存管理功能,可以在应用程序中缓存数据以提高性能。
可以使用内置的缓存驱动程序,如文件缓存、Memcache缓存等。
10. 日志记录:使用ThinkPHP框架提供的日志记录功能,可以将应用程序的运行日志记录到文件中,便于调试和排查问题。
最简单的ThinkPHP实例(3)接口
最简单的ThinkPHP实例(3)接⼝前端⼈,前端魂,前端最常打交道就是接⼝,来吧,⽤php撸两个~1、html部分application\index\view\index\index.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 开发环境版本,包含了有帮助的命令⾏警告 --><script src="https:///npm/vue@2/dist/vue.js"></script><!-- ⽣产环境版本,优化了尺⼨和速度 --><!-- <script src="https:///npm/vue@2"></script> --></head><body><div id="app"><div>----------- GET⽅法 ------------</div><input type="text" v-model="text" /><button @click="get()">GET⽅法</button><div>GET⽅法返回值:{{ getRes }}</div><br/><div>----------- POST⽅法 ------------</div><input type="text" v-model="text2" /><button @click="post()">POST⽅法</button><div>POST⽅法返回值:{{ postRes }}</div></div><script src="https:///axios/dist/axios.min.js"></script><script src="/js/qs.js"></script><script>var axiosAjax = axios.create({baseURL:'/',// <---- 这⾥使⽤ qs 转换参数transformRequest: [function (data) { // 转换数据data = Qs.stringify(data); // 通过Qs.stringify转换为表单查询参数return data;}],headers:{'Content-Type':'application/x-www-form-urlencoded'}})var app = new Vue({el: '#app',data: {text: '',getRes: '',text2: '',postRes: ''},methods: {get(){// get⽅法axios.get('/index/index/user?text='+this.text).then( (response) => {console.log(response);this.getRes = response.data}).catch( (error) => {console.log(error);});},post(){// post⽅法axiosAjax.post('/index/index/user_post', {text: this.text2}).then( (response) => {console.log(response);this.postRes = response.data}).catch( (error) => {console.log(error);});}}})</script></body></html>2、控制器部分<?phpnamespace app\index\controller;// 引⼊系统数据类use think\Db;// 引⼊系统控制器类use think\Controller;class Index extends Controller{public function index(){return view();}public function user(){// print_r($_GET);$a = ["data" => "我是GET返回值","text" => "⽤户输⼊了:".$_GET["text"]];// json_encode是转换成json字符串第⼆个参数是解决中⽂乱码问题return json_encode($a, JSON_UNESCAPED_UNICODE);}public function user_post(){// 获取payload json数据,转换成数组形式// $postData = file_get_contents('php://input');// $requests = !empty($postData) ? json_decode($postData, true) : array();// print_r($requests);$a = ["data" => "我是POST返回值","text" => "⽤户输⼊了:".$_POST["text"]];// json_encode是转换成json字符串第⼆个参数是解决中⽂乱码问题return json_encode($a, JSON_UNESCAPED_UNICODE);}}要注意的是axios为post⽅法时,传参是payload⽅式,php的$_POST是获取不到参数的所以前端要转换⼀下参数,变成form-data,代码参考html部分的transofmrRequest。
ThinkPHP框架项目开发专题
ThinkPHP框架项目开发专题--自动验证在WEB项目的开发中,项目的任何模块都会有数据添加的功能--比如用户注册、新闻添加、商品管理等,那么我们就会用到表单来传输数据,而添加数据时无论是前台用户还是后台管理员都避免不了填写无效数据或者错误数据,那么表单数据的验证就是我们在做项目中必不可少的。
所以如果大家参与或者独立开发过WEB项目的话一定会发现在添加数据时大量的数据验证--比如用户名是否存在、验证码是否正确、密码是否填写一致、年龄是否是数字等问题,那么就会用到大量的数据库查找、正则表达式的编写等问题困扰大家。
在ThinkPHP中,内置了数据对象的自动验证和自动完成功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。
需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性。
$_validate属性的验证因子格式:array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)*验证字段:表单字段名称,注:这个字段不一定是数据库字段,也可以是表单的一些辅助字段--比如确认密码和验证码等等。
*验证规则:要进行验证的规则,有时需要结合附加规则。
内置验证规则--包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字,这些验证规则可以直接使用。
注:如有其它验证规则则需自己编写方法*提示信息:用于验证失败后的提示信息。
验证条件:0 或者Model::EXISTS_TO_V AILIDATE--存在字段就验证(默认)1 或者Model::MUST_TO_V ALIDATE--必须验证2 或者Model::V ALUE_TO_V AILIDATE--值不为空的时候验证附加规则:配合验证规则使用regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)function 使用函数验证,前面定义的验证规则是一个函数名注:系统函数或自定义函数callback 使用方法验证,前面定义的验证规则是当前Model类的一个方法注:自定义方法confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名equal 验证是否等于某个值,该值由前面的验证规则定义in 验证是否在某个范围内注:前面定义的验证规则必须是一个数组unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值注:会请求数据库验证时间:1 或者Model:: MODEL_INSERT--新增数据时候验证2 或者Model:: MODEL_UPDATE--编辑数据时候验证3 或者Model:: MODEL_BOTH--全部情况下验证(默认)熟悉了$_validate属性后,就要用实例来分析在验证某些数据的时候该怎么样编写验证因子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用ThinkPHP框架快速开发网站(多图) 使用ThinkPHP框架快速搭建网站这一周一直忙于做实验室的网站,基本功能算是完成了。
比较有收获的是大概了解了ThinkPHP框架。
写一些东西留作纪念吧。
如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖。
以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码。
做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼。
所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了。
我选择的是PHP的ThinkPHP框架。
说实话,真的蛮不错的。
瞬间觉得Web开发还是蛮有效率的。
超级链接:ThinkPHP中文网按照套路,首先贴一下实验环境:1. WAMP(集成的那种,最Easy的几乎不需要配置)2. ZendStudio7.2(中文网址/,里面提供下载,在线注册机以及使用教程)3. ThinkPHP框架+百度UEditor编辑器插件4. Win7-64bit操作系统5. 浏览器(火狐,IE,Chrome),外加火狐FireBug插件用于调试以及偷样式-------------------------------------------------------------华丽分割-------------------------------------------------------------第一步:找网页模板(不会美工,PS,见谅。
)前端页面我找的是一个大学的实验室,这里就不贴了,很普通的那种。
后台直接下载的模板,感觉蛮漂亮的,运行后如下图:第二步:初识百度UEditor插件由于我要做的是实验室的网站。
实验室网站主要内容在如下几个方面:介绍实验室的成员实验室的项目,成果等实验室的新闻以及学术交流信息可见,信息主要偏重于后台的新闻,文章信息的发布,而前台几乎不存在编辑。
所以重点要在后台实现一个方便的文章发布体系。
我选用了百度出品的UEditor所见即所得编辑器。
主要是JS 实现的,整合到后台后如下所示,功能真的很多哇:关于UEditor的如何整合到网站中,请参考UEditor的官网,里面有详细教程。
第三步:初识ThinkPHP框架下面开始介绍ThinkPHP框架,首先为了加强感性认识,先看一看ThinkPHP工程的目录结构:文件夹:admin是后台工程文件夹home是前台工程public里面用于存放CSS文件,JS文件以及网页里面的图片ThinkPHP框架ueditor是百度编辑器下面三个PHP文件:admin.php是后台工程的入口文件,index.php是前台工程的入口文件。
config.inc.php,由于这个小项目的几乎所有数据都放在数据库里,而前后台都要连接数据库,所以所有的数据库配置代码放在了它里面。
而剩下的buildpath ,.settings , .project 是Zend IDE生成的,不管它们。
------------------------------------------------------华丽分割-------------------------------------------------------------由于我这里面实际是两个工程(home和admin),只要理解其中一个即可,故下面只介绍后台,即admin部分。
接着往下看,看一下admin.php文件,这是需要了解的第一个文件,即后台的入口文件。
几个宏定义分别指明了:1. ThinkPHP框架的路径2. 后台应用程序目录3.后台应用程序名称4. 开启调试模式5. 包含ThinkPHP框架下的ThinkPHP.php文件(重要!)下面新建一个小工程来演示一下开发过程:比如整个工程的大目录是xxx,然后把ThinkPHP框架拷贝进来,并添加admin.php文件(如上图中的代码)此时在浏览器里面输入:http://localhost/xxx/admin.php会自动生成admin目录,如下图打开admin目录,内容如下:其中主要关注四个文件夹:1. Conf 存放工程配置文件(比如定义一些常量什么的)2. Lib (最重要!存放MVC模式中的模型类和控制器类)3. Tpl(存放模板文件,按道理前面我们下载的模板应该放在这里)4. Runtime(存放运行时文件,比如缓存啊,数据库表缓存什么的)最后贴出浏览器上的运行结果。
对不起贴的有点晚。
如果能看到上面的画面,说明ThinkPHP可以正常运行啦。
下面我们继续完善吧。
------------------------------------------------------------华丽分割-----------------------------------------------------第四步:初识MVC模式到这里,不得不提一下在ThinkPHP中的MVC的概念。
MVC很有名,叫做模型-视图-控制器模式。
在ThinkPHP里面:模型(Model)可以认为就是一张数据库表。
那我做的工程来说:对于一篇文章(新闻),它的属性包括ID号,标题,作者,创建时间,最后修改时间以及文章内容。
这就是一篇文章的模型。
然后就按照这个思路建立对应的数据库表:视图(View)可以认为就是用户看到的东西,即模板,或者说皮肤。
比如前面贴出的后台模板,那个在ThinkPHP概念中就是视图。
控制器(Action)可以认为是视图与模型之前的桥梁。
因为网站上显示的内容基本全部来自众多模型们(数据库表们),而控制器负责的就是决定在哪些情况下显示哪些模型里面的哪些数据。
还是拿我的例子说,我后台工程的首页对应的控制器是Index控制器。
(Index控制器为所有工程的默认控制器)。
但是你想,一个网站的首页一般是有很多按钮啊,超链接啊什么的,可以跳到其他地方去的东西。
贴张图:这是我的后台首页。
可以看到左边有导航栏,右下边列出了数据库当前的文章信息,可以看到一共有三篇文章。
比如我现在可能想做:1. 把文章”1111测试文章发布系统”删除2. 把文章”詹姆斯高捧第3座MVP奖杯”改成”詹姆斯高捧第4座MVP奖杯”3. 新添加一篇别的文章这就对应了Index控制器的不同功能了,也就是Index控制器类IndexAction的不同方法(比如取名edit()方法,delete()方法,add()方法)。
当然之所以会看到页面显示,是因为默认情况下执行Index控制器的Index()方法,在该方法中调用display()方法显示模板(视图)。
不信可以看默认的文件,里面的Index控制器的Index 方法实现的就是HelloThinkPHP的欢迎页面。
比如:IndexAction目录为:/xxx/admin/Lib/Action/IndexAction.class.php内容为:可以看到,默认情况下在index方法中调用了$this->display()(注意看IndexAction 继承Action类,display方法是Action 类的方法);调用display()方法后,ThinkPHP会在对应工程的Tpl文件夹下的Index文件下下找index.html文件。
其中前一个Index文件夹对应的是Index控制器,index.html对应的是index()方法。
所以,一个控制器类对应一个模板文件夹。
具体对应多少个模板跟控制器类有多少个方法以及有多少个方法需要display有关。
故,此时对应的模板文件路径为:/xxx/admin/Tpl/Index/index.html细心的朋友可能要问了,你这里只说了视图(模板)和控制器啊,模型呢?你是怎么知道数据库里的那三篇文章的信息的呢?其实不然,我在index方法里面还做了一些事情,下图是精简版index方法:可以看到,第一步,我就实例化了一个模型。
模型名字是Article,前面说到模型就是数据库表,此时查看一下有哪些数据库表:第一个表名字是think_article,可以看到还差一个前缀think_,其实这个是在配置文件中指定的,还记得前文所述的config.inc.php吗?其配置代码如下所示:<?phpreturn array('DB_TYPE' =>'mysql','DB_HOST' =>'localhost','DB_NAME' =>数据库名字,'DB_USER' =>用户名,'DB_PWD' =>密码,'DB_PORT' =>'3306','DB_PREFIX' =>'think_',);>第二条语句就是查询数据库。
ThinkPHP提供了很多种查询数据库的方法,我使用的是连贯操作法。
执行完第二条语句后$new_list变量就存储了所有文章的信息,那么怎么把它显示到界面上去呢?看第三句话,它把该变量分配给了一个叫做’new_list’的变量(好像同名了哇。
不过没关系,关键是assign方法),然后我们在模板文件里面进行替换就OK啦。
默认情况下,在HTML里面写{$new_list}就OK啦。
当然,这里面的new_list是一个复合的变量,不是单纯的数字或者字符串。
不过ThinkPHP提供了很多循环的方法给我们使用,很是方便。
最后一条语句就是显示对应的视图文件了。
我们就能把数据库中的文章信息按照视图(模板)里面定义的规则显示在浏览器中了。
---------------------------------------------------------------华丽分割-----------------------------------------------------------源码下载最后给出示例工程xxx的源码。
有需要的朋友可以下载,可以很快的了解ThinkPHP的大概原理。
源码功能:1.后台管理员登陆2.添加文章,编辑文章,删除文章3.前台显示文章使用方法:1.解压到网站根目录下,默认是www文件夹下的xxx文件夹:2.在MySQL中新建一个数据库,比如rubydb,整理成utf8-genaral-ci3.导入数据库表文件夹下的两个数据库表think_article和think_user,导入后入下图:4.配置Config.inc.php文件[php] view plain copy <span style="font-size:16px;"><?php return array( 'DB_TYPE'=> 'mysql', 'DB_HOST' =>'localhost', 'DB_NAME' => '自己建一个数据库',//需要新建一个数据库!名字叫'DB_USER' => '你的数据库用户名', //数据库用户名'DB_PWD' => '你的数据库密码',//数据库登录密码'DB_PORT'=> '3306', 'DB_PREFIX' <spanstyle="white-space:pre"> </span>=>'think_',//数据库表名前缀); ?></span>可见,上面的DB_NAME,DB_USER,DB_PWD需要修改分别是'DB_NAME'=>'rubydb' ,'DB_USER'=>'你的mysql登录账号' ,'DB_PWD' =>'你的mysql登录密码'5.运行http://localhost/xxx/admin.php,弹出后台登录页面:输入数据库think_user里面的用户信息:ruby97,密码ruby97 ,再输入验证码即可登录。