【查】显示留言列表及数据分页


本章节目录

    查询列表数据

    打开文 app/Http/Controllers/FeedbackController.php,修改 index() 方法代码:

    public function index()
    {
        // 查询记录
        $records = Feedback::orderBy('id', 'DESC')->get();
        // 渲染模板并传递数据
        return view("index")->with("records", $records);
    }
    

    使用 with() 方法传递数据到 index 模板,第一个参数是模板中要读取的值名,第二个参数是要传递的值。

    模板渲染

    打开文件 resources/views/index.blade.php,修改代码:

    <h4>已经有留言({{ $records->count() }} 条)</h4>
    <hr>
    <table class="table table-bordered">
        <thead>
        <tr>
            <th width="10">ID</th>
            <th width="80">留言者</th>
            <th width="100">手机号码</th>
            <th width="150">标题</th>
            <th>内容</th>
            <th width="100">留言时间</th>
            <th width="100">操作</th>
        </tr>
        </thead>
        <tbody>
        @forelse($records as $record)
        <tr>
            <td>{{ $record->id }}</td>
            <td>{{ $record->name }}</td>
            <td>{{ $record->phone }}</td>
            <td>{{ $record->title }}</td>
            <td>{{ $record->content }}</td>
            <td>{{ $record->created_at }}</td>
            <td>
                <a href="}" class="btn btn-primary">编辑</a>
                <button type="button" class="btn btn-danger" onclick="return confirm('确认删除?')">删除</button>
            </td>
        </tr>
            @empty
            <tr>
                <td colspan="100" class="text-center">暂无留言</td>
            </tr>
        @endforelse
        </tbody>
    </table>
    

    我们使用 @foreach 来循环输出一个数组, @forelse 可以配合 @empty 做空记录状态时的界面显示。
    count() 方法可以查询记录的数量。

    更详细操作可以查阅官方手册中的 blade 部分。

    数据分页及显示

    Laravel 的分页显示非常简单,只需要两步。

    第一步:在控制器方法中把 get() 修改成 paginate(10) ,代码如下:

    public function index()
    {
        $records = Feedback::orderBy('id', 'DESC')
            ->paginate(10);
        return view("index")->with("records", $records);
    }
    

    第二步:在模板中需要显示分页的地方写入以下代码:

    {{ $records->links() }}
    

    paginate() 方法的参数是每页的记录数。如果总记录数小于分页记录数,分页链接是隐藏的。

    注意:现在刷新页面是会报错的,因为我们使用了 count() 方法查询了记录总数,使用分页结果的时候,我们需要换成 total() 方法。

    修改后的代码如下:

    <h4>已经有留言({{ $records->total() }} 条)</h4>
    <hr>
    <table class="table table-bordered">
        ... 保持不变 ... 
    </table>
    {{ $records->links() }}
    

    分页的实现,简单暴力。

    效果如下:

    默认的分页集成了 bootstrap 样式。当然我们也可以自定义分页显示样式。

    关于分页的更多细节请查阅官方文档
    英文版:https://laravel.com/docs/8.x/pagination


    请先 登录
    审核后显示
    讨论记录(0 条)
    暂时还没有讨论

    © 2024 麻辣讲 豫ICP备19017310号-2