Laravel 5.x Voyager:自定义BREAD增改查模板及路由配置问题
让Laravel Voyager自定义路由&模板按钮生效的步骤
我来帮你一步步搞定这个问题,你已经做了路由和控制器的基础配置,接下来调整几个关键地方就能让它完全生效:
1. 调整路由加载顺序(重中之重!)
你现在把自定义路由放在Voyager::routes()之后,这会导致Voyager的通配符路由(比如admin/{slug})优先匹配,直接拦截你的自定义路由。赶紧把顺序调换过来:
Route::group(['prefix' => 'admin'], function () { // 自定义路由必须放在Voyager路由注册之前 Route::get('order-payment-txns', 'AdminController@orderList') ->middleware('voyager.admin') ->name('admin.order-payment-txns'); // 给路由命名,方便模板调用 Voyager::routes(); });
另外,把中间件换成voyager.admin会更贴合Voyager的权限体系,它会自动验证用户是否是后台管理员,比自定义的admin.user更适配。
2. 验证控制器与视图的正确性
- 控制器命名空间:确保你的
AdminController的命名空间是App\Http\Controllers(如果放在Admin子目录里就是App\Http\Controllers\Admin),不然Laravel会找不到这个控制器。 - 视图文件路径:你返回的视图是
vendor/tcg/browse-order,意味着你需要在resources/views/vendor/tcg/目录下创建browse-order.blade.php文件。可以先在视图里写点测试内容(比如<h1>测试支付交易页面</h1>),访问路由看看能不能正常渲染,排除视图找不到的问题。
3. 在BREAD模板中添加自定义按钮
要在BROWSE页面显示新按钮,得用视图重写的方式(直接改vendor里的文件会被Voyager更新覆盖):
- 复制
vendor/tcg/voyager/resources/views/bread/browse.blade.php到resources/views/vendor/tcg/voyager/bread/browse.blade.php - 在模板里找到按钮区域(比如批量操作按钮所在的
<div class="pull-right">容器里),添加你的自定义按钮:
<a href="{{ route('admin.order-payment-txns') }}" class="btn btn-primary"> <i class="voyager-list"></i> 查看支付交易记录 </a>
(这里用之前给路由加的名字admin.order-payment-txns来生成链接,比硬写URL更稳妥)
4. 清除缓存确保配置生效
最后执行这两个命令,清除路由和视图缓存,避免旧配置干扰:
php artisan route:clear php artisan view:clear
做完这些步骤,你的自定义路由就能正常访问,BREAD页面也会显示新按钮啦!
内容的提问来源于stack exchange,提问作者Cem Flav
相关产品推荐
相关产品推荐

