ThinkPHP5简单搭建(上)
- Thinkphp 的安装
我这里是用的mac系统,直接在官网下载的 官网是:http://www.thinkphp.cn
下载完直接解压缩,放到搭建好平时写项目的位置就可以 - 重点目录结构及文件介绍
application : 应用目录,我们的模型视图控制器都会放在这个文件夹下,这是我 们开发的主阵地
public : 这个是我们项目的入口文件,thinkphp 是一个单一入口的框架
thinkphp : 框架的核心目录
关键文件
application/config.php 项目配置文件,开启 debug 调试模式(在开发中)
application/database.php 数据库配置文件
public/index.php 项目入口文件,定义了应用目录的位置以及包含框架启动文件来启动框架 - 配置虚拟主机
httpd.conf 中判断下面是否被注释,如果被注释请取消注释:
1. Include conf/vhosts.conf
2. LoadModule vhost_alias_module modules/mod_vhost_alias.so
3. 删除 vhost.conf 中原有的默认内容,添加如下内容
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
- 基本的写法
01.控制器的基本写法
模块中的控制器实际上就是一个一个的类,这个类写的时候要继承 Controller 并且要在前面写上命名空间
thinkPHP5 使用 return 来返回一个html ,自动渲染到页面上
tp5 使用的是 $this->requrst->param() 接受参数,当然也要在开始写上命名空间
代码示例:
class Index extends Controller{
//查询
public function index(){
$res = db("product")
->select();
$this->assign("res",$res);
return view();
}
//删除
public function delete($id){
$res=db("product")
->where("id",$id)
->delete();
if ($res){
$this->success("删除成功","index");
}else{
$this->error("删除失败");
}
}
//添加
public function add(){
return view("addinfo");
}
public function addinfo(){
$pname=input("post.pname");
$price=input("post.price");
$description=input("post.description");
$add=db("product")
->insert(["pname"=>$pname,"price"=>$price,"description"=>$description]);
if($add){
$this->success("添加成功","index");
}else{
$this->error("添加失败");
}
}
//修改
public function mod($id){
$res = db("product")
->where("id", $id)
->select();
// 模板赋值
$this->assign('val', $res);
return view("modfiy");
}
public function modfiy($id){
$name = input('post.pname');
$price = input('post.price');
$description = input('post.description');
//上传文件
$file = request()->file('img');
$info = $file->move(ROOT_PATH . 'public/static' . DS . 'img');
if ($file){
$fileName = $info->getSaveName();
$sql = ['pname' => $name, 'price' => $price, 'description' => $description,'img'=>$fileName];
$data = db('product')->where('id', $id)->update($sql);
if ($data) {
$this->success("修改成功", "index");
} else {
$this->error("修改失败");
}
}else{
echo "error";
}
}
- 模板和控制器的关系
每一个模块都有自己的控制器、视图、和模型,访问的时候是按照 index.php/模块/控制器/方法,访问的,然后每一个控制器在 view 中对应着一个同名的文件夹,比如说 controller/Index 控制器, view/Index 就是这个控制器对应的模板文件夹,那么每一个方法都会在模板文件夹下对应一个同名的 html 文件作为这个方法的模板
tp5 是通过$this->assign('data',$data);
进行赋值并通过return $this->fetch('模板名');
进行渲染的 - 对 SEO 友好的路由
我们知道,我们的搜索引擎抓取页面最多抓三层,但是我们刚刚写的那种 URL 已经太多层了,这非常不利于搜索引擎的收录,于是 tp5 给我们提供了一种简化的方法