在线留言
这个功能非常简单,就是把浏览者提交的信息给列出来。我们要加路由、模型、控制器、视图,这个些前边我都做了介绍,这里主要介绍如何实现分页
第一步:数据迁移,执行命令
php artisan make:migration create_messages_table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMessagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title',20)->default('')->comment('标题');
$table->string('name',20)->default('')->comment('姓名');
$table->string('mobile',11)->default('')->comment('联系人手机号');
$table->string('email',30)->default('')->comment('联系人电子邮箱');
$table->string('address',40)->default('')->comment('联系人地址');
$table->string('content',300)->default('')->comment('留言内容');
$table->boolean('state')->default(0)->comment('查看状态');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('messages');
}
}
php artisan migrate
数据库建立成功。
第二步:新增路由,在/routes/web.php中
$router->get('/message/list', 'MessageController@lists'); // 在线留言
第三步:新增Message模型,在/app/Models/目录,新建Message.php文件
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
public static function lists(int $page = 0, int $parPage = 1)
{
$message = Message::orderBy('id','DESC');
return $message->paginate($parPage, ['*'], 'page', $page);
}
}
分页要使用Eloquent 分页,非常好用。之前我们获取列表使用的是get(),分页要是用paginate()。
第四步:新建在线留言控制器 MessageController.php文件
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Message;
use Illuminate\Http\Request;
class MessageController extends Controller
{
public function lists(Request $request)
{
$list = Message::lists($request->input('page', 0));
$data['list'] = $list;
return view('admin.message.list', $data);
}
}
第五步:新建留言视图list.blade.php文件,输出分页,使用类似{{ $users->links() }}的方式。
<!DOCTYPE html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>欢迎页面-X-admin2.2</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/css/xadmin.css">
<link rel="stylesheet" href="/css/pagination.css">
<script src="/lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="x-nav">
<span class="layui-breadcrumb">
<a href="/admin/index">首页</a>
<a href="#">在线留言</a>
</span>
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
</div>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body ">
<table class="layui-table layui-form">
<thead>
<tr>
<th>标题</th>
<th>用户名</th>
<th>手机号</th>
<th>邮箱</th>
<th>地址</th>
<th>内容</th>
<th>阅读状态</th>
<th>提交时间</th>
</thead>
<tbody>
@foreach($list as $val)
<tr>
<td>{!! $val['title'] !!}</td>
<td>{!! $val['name'] !!}</td>
<td>{!! $val['mobile'] !!}</td>
<td>{!! $val['email'] !!}</td>
<td>{!! $val['address'] !!}</td>
<td>{!! $val['content'] !!}</td>
<td>{!! $val['state'] !!}</td>
<td>{{ $val['created_at'] }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="layui-card-body ">
{{ $list->links() }}
</div>
</div>
</div>
</div>
</div>
</body>
<script>
layui.use(['laydate','form'], function(){
var laydate = layui.laydate;
var form = layui.form;
//执行一个laydate实例
laydate.render({
elem: '#start' //指定元素
});
//执行一个laydate实例
laydate.render({
elem: '#end' //指定元素
});
});
</script>
</html>
效果
完。