Lumen企业站内容管理实战 - 在线留言

在线留言

 这个功能非常简单,就是把浏览者提交的信息给列出来。我们要加路由、模型、控制器、视图,这个些前边我都做了介绍,这里主要介绍如何实现分页

第一步:数据迁移,执行命令

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>

效果

完。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangpeng52758

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值