You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Voyager中不使用B创建页面及配置管理员专属后台报表页

在Voyager中不依赖BREAD创建管理员专属报表页面

看起来你想要绕开Voyager自带的BREAD(Build/Read/Edit/Add/Delete)系统,手动创建一个仅管理员能访问的后台报表页面,我来一步步帮你实现:

1. 配置后台专属路由

首先在Laravel项目的路由文件里添加后台报表路由,利用Voyager自带的管理员中间件做权限校验。打开routes/web.php,加入以下代码:

// 后台路由组,自动校验管理员身份
Route::group(['prefix' => 'admin', 'middleware' => ['admin']], function () {
    Route::get('reports', [App\Http\Controllers\Admin\ReportController::class, 'showReports'])->name('admin.reports');
});

这里的admin中间件是Voyager内置的,会自动拦截非管理员用户访问这个页面。

2. 编写报表控制器

在app/Http/Controllers/Admin目录下新建ReportController.php,用来处理报表数据的查询和视图渲染:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
// 引入你需要查询的模型,比如示例中的Order模型
use App\Models\Order;

class ReportController extends Controller
{
    public function showReports()
    {
        // 这里写你的报表数据查询逻辑,比如统计季度销售额
        $quarterlySales = Order::selectRaw('QUARTER(created_at) as quarter, SUM(total_amount) as sales')
            ->whereYear('created_at', date('Y'))
            ->groupBy('quarter')
            ->orderBy('quarter')
            ->get();

        // 把数据传递给视图
        return view('admin.reports.index', compact('quarterlySales'));
    }
}

你可以根据实际需求修改数据查询逻辑,关联任意数据库表或模型。

3. 创建报表视图页面

在resources/views/admin/reports目录下新建index.blade.php,复用Voyager的后台模板保持风格统一:

@extends('voyager::master')

@section('page_title', '年度销售报表')

@section('page_header')
    <div class="container-fluid">
        <h1 class="page-title">
            <i class="voyager-trending-up"></i> 年度销售报表
        </h1>
    </div>
@stop

@section('content')
    <div class="page-content browse container-fluid">
        <div class="row">
            <div class="col-md-12">
                <div class="panel panel-bordered">
                    <div class="panel-body">
                        <!-- 这里放你的报表展示内容,示例用表格展示 -->
                        <h3>2024年季度销售额统计</h3>
                        <table class="table table-striped table-bordered">
                            <thead>
                                <tr>
                                    <th>季度</th>
                                    <th>总销售额</th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach($quarterlySales as $data)
                                    <tr>
                                        <td>第{{ $data->quarter }}季度</td>
                                        <td>¥{{ number_format($data->sales, 2) }}</td>
                                    </tr>
                                @endforeach
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
@stop

如果需要可视化图表,可以直接在视图里引入Chart.js这类工具,Voyager后台已经加载了jQuery,集成起来很方便。

4. 给后台菜单添加报表入口

最后把报表页面加到Voyager后台侧边栏:

  1. 登录Voyager后台,进入Settings > Menus
  2. 选择admin菜单(后台主菜单)
  3. 点击Add Menu Item:
    • Display Name:填写“销售报表”(或你想要的名称)
    • URL:输入/admin/reports
    • Icon Class:选一个合适的图标,比如voyager-trending-up
    • Parent:如果不需要子菜单,选择None
    • Order:设置菜单排序位置,比如填99放在最后
  4. 保存后刷新后台,就能在侧边栏看到报表入口了。

额外小提示

如果需要更细粒度的权限控制,可以在Voyager的Permissions里创建自定义权限,然后在控制器里添加对应的权限校验中间件。

内容的提问来源于stack exchange,提问作者Bryan Zavala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:24:47