ThinkPHP5

ThinkPHP5小白教程(四) 留言板

今天,我们试着用ThinkPHP5做个留言板吧,实现简单的数据添加以及展示,效果图如下
演示.gif
接下来开始实现这个效果,
静态页我这里就不写了,会上传到附件,重点看PHP代码

创建项目

首先我们现在application中创建一个新的模块,我这里就用index代替了,模块中创建三个文件夹,分别是controller、model、view
QQ截图20190609131520.png

控制器基本代码

接着,在controller中创建Index.php文件用来写我们的控制器代码

<?php
/**
* file : controller/Index.php
*/
namespace app\index\controller;//命名空间,按照路径命名

use think\Controller;//引入基本类库
//继承基本类库
class Index extends Controller
{
}

注意:

  1. 控制器名以及命名空间的命名规范
  2. 命名空间必须放在代码第一行
  3. 类名必须和文件名保持一致

功能的话,我们只实现查看和增加

public function index(){
}

public function add(){
}

输出静态页

TP5中的静态页统一放在view(视图)目录,新建view/index/index.html文件写前端代码
注意:

  1. 静态文件统一存放在public/static目录下
  2. 引用静态文件是,使用__STATIC__指向static目录
    <link rel="stylesheet" type="text/css" href="__STATIC__/index/css/bootstrap.min.css">

部署好静态页后,在index方法中return

public function index(){
    return $this->fetch("index/index");
}

注意:fetch的的参数是 模块目录名/文件名,如果模块目录名和控制器名一样,则可以省略

创建数据库以及Model

创建一个test数据库,并在数据库中创建一个messages留言表
QQ截图20190609143430.png
form表单的name值和表头名相同,例

<input type="text" name="name" placeholder="姓名">
<input type="text" name="content" placeholder="留言">

接着,在model目录下,创建Messages.php文件(和表名保持一致)
添加基本代码

<?php
/**
 * file : model/Index.php
 */
namespace app\index\model;//命名空间

use think\Model;//引入基本类库

//继承基本类库
class Messages extends Model
{

}

配置数据库文件

打开/application/database.php,按注释填写即可

添加留言

页面都写好了,form表单改提交到哪里呢?
在ThinkPHP5中,url路径可以这么写

<form action="{:url('index/Index/add')}" method="post">

既:{:url('模块名/控制器名/方法名')},这样就可以在add方法中接收到数据了

    public function add()
    {
        $data = $this->request->param('');
        dump($data);
    }

解释:

  1. dump()是TP5自带的方法,代替var_dump()
  2. request助手函数,可以获取到传递过来的数据,param('')表示接收所有数据
    可以看到,我们得到的是一个数组

QQ截图20190609150130.png
这时只需要使用模型的save方法就可以在数据库中新增这条数据

use app\index\model\Messages;//引入模型
    public function add()
    {
        $data = $this->request->param('');
        $comment = new Messages();//实例化模型
        $comment->save($data);//添加数据
    }

在添加成功后,我们出现成功页面

    public function add()
    {
        $data = $this->request->param('');
        $comment = new Messages();//实例化模型
        if ($comment->save($data)){
            $this->success('留言成功','index/Index/index');
        }
    }

注:success方法参数是 提示信息,跳转地址(模块/控制器/方法)
相对应的,还有错误页面

$this->error('留言失败','index/Index/index');

输出数据

在index方法中,添加如下代码

    public function index()
    {
        $comment = new Messages();//实例化模型
        $all = $comment->select();//查询所有数据
        $this->assign("all", $all);//将得到的结果传给前端页面
        return $this->fetch("index/index");
    }

在html文件中,使用volist遍历数据

{volist name="all" id="vo"}
<div class="answer_one">
    <div class="col-md-12 messages_one">
        <div> 姓名:{$vo.name}</div>
        <div style="margin-top: 20px;"> 留言:{$vo.content}</div>
    </div>
</div>
{/volist}

注:volist 的name值为控制器传递来的值

这样,一个简单的留言板就实现了

附件:留言板

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.