如何在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后台侧边栏:
- 登录Voyager后台,进入Settings > Menus
- 选择
admin菜单(后台主菜单) - 点击Add Menu Item:
- Display Name:填写“销售报表”(或你想要的名称)
- URL:输入
/admin/reports - Icon Class:选一个合适的图标,比如
voyager-trending-up - Parent:如果不需要子菜单,选择
None - Order:设置菜单排序位置,比如填
99放在最后
- 保存后刷新后台,就能在侧边栏看到报表入口了。
额外小提示
如果需要更细粒度的权限控制,可以在Voyager的Permissions里创建自定义权限,然后在控制器里添加对应的权限校验中间件。
内容的提问来源于stack exchange,提问作者Bryan Zavala
相关产品推荐
相关产品推荐

