前台文件PHP完善步骤,ThinkPHP使用步骤
ThinkPHP是一个框架:MVC(采用面向对象思想)框架
市面上常用的框架:
zend framework yii thinkPHP
ThinkPHP:有完善的中文资料,使用相对来说比较多
1. 下载ThinkPHP
解压之后生成两个文件:ThinkPHP是我们需要的核心代码,Examples是例子
2、把THinkPHP复制到www文件夹中,然后新建一个index.php文件(与ThinkPhp同级文件夹)
1. 写上:
require("ThinkPHP/ThinkPHP.php");//根据参数的不同,ThinkPHP.php中设置了,会跳转到IndexAction.class.php(这里没有参数)
?>
3、如果在index.php中写:
define('APP_PATH','APP/');//添加这个生产的文件会到App文件中
define('APP_DEBUG',true);//调试模式不生成缓存文件
require("ThinkPHP/ThinkPHP.php");
?>
刚开始就有ThinkPHP,index.php新建一个App,Public文件夹
运行index.php会在App中生成许多文件夹,不会再与ThinkPHP同级文件夹生成文件
在没有写define('APP_DEBUG',true);时会产生缓存文件
修改配置文件后,需要删除一下缓存
在index.php中写上这句话define('APP_DEBUG',true);不产生缓存文件
4、分前台后台
在D:\wamp\www\Think_php\App\Lib\Action里面创建Admin,Home文件夹
在D:\wamp\www\Think_php\App\Tpl中也创建Admin,Home文件夹
二、ThinkPHP的使用
1、在Lib保存了控制器目录(Action,和我们之前写的Controller)和模型目录(Model),Action里面是动作
2、在Tpl目录保存的是视图层的文件
3、Runtime保存的是系统生成临时文件(缓存...)
4、控制器的写法:
GoodsAction.class.php
访问控制器的时候,通过index.php?m=控制器&a=动作
但是由于这种写法不美观,而且SEO不友好()
于是TP框架写了一个pathinfo模式
index.php/控制器/动作
5、模型层
链接数据库----通过配置文件来实现的
现在获得模型,调用模型的方法
TP框架封装了模型对象,通过M()函数获得模型,参数是需要操作的表名
但是需要注意:这个表名需要首字母大写
调用select()方法可以获得所有的记录,相当于我们之前写的getAll()
6、视图层显示数据
assign()
display()注意:display()可以带参数也可以不带参数
如果不带参数,控制器会自动去
视图层/模块分组(控制器名)/模板文件(命名通常是每个动作对应一个模板文件)
每个控制器在Tpl视图层都对应一个目录,
每个动作对应模板文件
如果是标量数据,在模板里面通过{变量名}来访问
如果是数组,在模板文件需要循环遍历这个数组,通过
在模板文件里面,访问数组的元素通过{数组.元素下标}或者通过{数组[‘下标’]}
"{$list.id}"或{$list['name']}s
三、真实项目的部署
1、(1)项目要区分前台和后台(控制器,视图层)
(2)我们要将浏览器能够直接访问的文件(js,images,css)统一的放到一个目录里面(Pulblic),然后将不能被浏览器直接访问的文件,放到另一个目录(App)
通常情况下,浏览器能够直接访问的文件,放到public目录里
不能被浏览器直接访问文件放到private App(保存项目的应用文件)
2、先将项目分为公共部分和私有的部分
如何将TP自动生成的MVC的结构保存到App目录里面,因为按照项目的部署思想,公共的文件(js,images,css)应该放到Pulic目录,而项目的核心代码应该放到App目录
3、是通过在入口文件,增加一个常量APP_PATH
4、调试模式和部署模式(生产模式)
(1)调试模式:如果修改了数据表的数据,或者是修改了配置文件,需要将缓存删除,开启调试模式,不生成缓存文件APP_DEBUG =》true
(为了方便调试错误,关闭缓存,APP_DEBUG =》true)
(2)部署模式:真正上线了,我们很少再会修改数据表的结构或者是配置文件,这个时候,我们会将调试模式关闭APP_DEBUG => FALSE,生成缓存文件
(上线之后,开启缓存APP_DEBUG => FALSE)
5、将项目分成前台和后台(控制器,视图)
通过修改配置文件,增加两个配置项:“
‘APP_GROUP_LIST’ => ‘Admin,Home’,
‘DEFAULT_GROUP’=>’Home’,
(2)访问的时候,要:入口文件/分组/控制器/动作
利用基本的模型完成一个增删改查
增加:
表单应该提交到这个地址,因为控制器的职责是接收数据,命令视图显示或者
在视图层的模板里面给我们们封装了一些伪常量(),保存的是一些路径
(3)、接收数据的时候,用一个数组来保存我们接收到的数据,但是需要注意:数组的下标和数据表的字段对应
注意:M()参数是当前操作的数据表,表名尽量首字母大写,因为window系统没问题,但是移植到Linux操作系统的话,会出错
(4)、只需要调用当前模型的add()方法(参数是需要插入的数据),即可向数据表插入一条数据,插入成功之后返回新纪录的id,如果失败返回false
public function add2(){
$data=array(
'id'=>'5',
'name'=>'juan',
'age'=>'12',
);
$goods_model=M('Xiao');
var_dump($goods_model->add($data));
}
不管向数据表中添加数据成功还是失败,应该给我们提示一些信息,当前控制器的方法
success(‘提示信息’,‘跳转到哪个页面’)-------0-成功之后的提示信息
error(‘提示信息’,‘跳转到哪个页面’) -----------失败之后提示的信息
if($goods_model->add($data)){
$this->success('添加成功','__URL__/goods');
}else{
$THIS->error('添加失败','__URL__/show');
}
(5)、删除:delete
public function del(){
$goods_id=$_GET['id'];
//var_dump($goods_id);
$goods_model=M('Xiao');
//var_dump($goods_model->delete($goods_id));
if($goods_model->delete($goods_id)){
$this->success('删除成功','__URL__/goods');
}else{
$this->error('删除失败','__URL__/goods');
}
}
删除成功之后返回1,失败返回false
(6)、查找:find
public function edit(){
$goods_id=$_GET['id'];
$goods_model=M('Xiao');
$list=$goods_model->find(1);
$this->assign('list',$list);
$this->display();
}
(7)、更新:save
调用模型的save()方法完成数据的更新
更新成功返回1
更新失败返回false
更新的时候要获得更新的这条记录的id,确切的说应该是这条记录的主键
public function update(){ $data=array( 'id' => $_POST['id'], 'name' => $_POST['name'], 'age' =>$_POST['age'] ); $goods_model=M('Xiao'); //var_dump($goods_model->save($data)); if($goods_model->save($data)){ $this->success('修改成功','__URL__/goods'); }else{ $this->error('修改失败','__URL__/goods'); } }
前台文件PHP完善步骤,ThinkPHP使用步骤相关推荐
- wps的计算机在哪里设置密码,wps文件怎么设置和取消密码 wps文件密码设置和取消的步骤方法...
在wps制作文件时,有时候我们需要中途离开,但是担心其他用户不小心操作导致文件丢失,那么我们可以设置wps文件密码,这样就可以避免了,那么怎么将wps文件设置密码呢?其实设置方法非常简单,下面教程之家 ...
- 怎么合并多个PDF文件?仅需三个步骤,轻松合成一个文档
大家在日常学习.工作中有没有碰到过这种情况,当完成一项任务时,需要在网上寻找各式各样的PDF文档资料,而寻找完之后,为了方便阅读与整理,将它们合并成一个PDF文件不失为一个好方法. 有的小伙伴可能刚接 ...
- C# 使用HttpClient上传文件并附带其他参数的步骤
HttpClient和MultipartFormDataContent(传送门)最低适用于.NET Framework 4.5版本 发送端代码 using (HttpClient client = n ...
- c语言万能头,C++万能库头文件在vs中的安装步骤(图文)
前言 C++万能库头文件在vs2019中的安装 一.C++万能库是什么? 1.C++万能库的定义:简而言之,就是一条语句代替了多条语句,包含了目前c++所包含的所有头文件 2.C++万能库的写法:#i ...
- 谷歌浏览器单独下载插件文件crx到本地的方法步骤
描述:谷歌浏览器单独下载插件文件crx到本地的方法步骤 步骤: 打开网站,搜索插件名称 https://www.crx4chrome.com/ 进入详情页,点击Download crx file fr ...
- ThinkPad 使用两种BIOS升级文件进行BIOS升级的具体步骤。
ThinkPad 使用两种BIOS升级文件进行BIOS升级的具体步骤. 一.ThinkPad A/T/R/X/G系列使用BIOS Diskette升级文件进行BIOS升级步骤: 1.在计算机进行BIO ...
- 理光有邮件服务器吗,理光Aficio 3035复印机通过电子邮件发送扫描文件的设定方法及操作步骤...
[转]http://www.hi-office.cn/ricoh/maintenance/4987.html 理光Aficio 3035复印机通过电子邮件发送扫描文件的设定方法及操作步骤 作者:hio ...
- 批量生成文件夹并命名,操作步骤
如何批量生成文件夹并命名?前段时间小编在工作中遇到这样一个事情,由于特殊原因,需要根据已经准备好的名称创建大量的文件夹,创建文件夹并且命名比较简单,只要你会使用电脑就知道如何操作,但问题是创建这么多的 ...
- linux下gcc编译c文件生成可执行文件的四个步骤
Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译.编译.汇编.链接. 1.预编译( 生成 hello.i 文件) 预编译的处理规则: 1. 将所有的 "#define& ...
最新文章
- java有没有求组合的函数_如何在Java 8中使用compose和andThen组合函数
- OpenStack Neutron浅析(一)
- 【运维】linux硬盘空间不足,扩容硬盘,挂载目录,并永久挂载
- 学习3D游戏开发进阶之路
- MySQL取字段注释
- in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)
- springcloud20---Config加入eureka
- 平衡二叉树搜索二叉树
- 解决visio图片生成PDF有留白的问题
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
- java删除某些段落word_Java 批量删除Word中的空白段落
- oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
- topojson转换与应用
- git合并多次提交为一次提交
- 如何获取iOS App素材
- 微信公众号及微信支付签名算法
- 02-StringStringBuilderStringBuffer
- 山东二本计算机排名大学最新,山东二本大学排名最新
- Tomcat下log4j日志文件 配置过程
- DockOne微信分享(一三四):国内某大型酒店管理集团基于Kubernetes的实践