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

Laravel Voyager中为Product模型创建多浏览页面及路由配置

实现多产品浏览页面的路由方案

1. 添加自定义路由

在项目的routes/web.php文件中,添加一条带admin权限验证的路由,指向自定义控制器方法:

Route::group(['prefix' => 'admin', 'middleware' => ['admin.user', 'admin']], function () {
    Route::get('products/published', [App\Http\Controllers\Admin\ProductController::class, 'showPublishedProducts'])->name('voyager.products.published');
});

2. 编写自定义控制器方法

新建或修改Admin目录下的Product控制器,继承Voyager的基础控制器,实现筛选逻辑:

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use TCG\Voyager\Http\Controllers\VoyagerBaseController;

class ProductController extends VoyagerBaseController
{
    public function showPublishedProducts(Request $request)
    {
        // 获取Product对应的DataType配置
        $this->dataType = \TCG\Voyager\Models\DataType::where('slug', 'products')->firstOrFail();
        
        // 构建筛选查询:仅保留publisher_id不为null的记录
        $query = $this->dataType->model()->whereNotNull('publisher_id');
        
        // 复用Voyager默认的筛选、排序、分页逻辑
        $this->applyFilters($query, $this->dataType);
        $orderBy = $request->get('order_by', $this->dataType->order_column ?? 'id');
        $sortOrder = $request->get('sort_order', $this->dataType->order_direction ?? 'desc');
        $query->orderBy($orderBy, $sortOrder);
        
        $dataTypeContent = $query->paginate($request->get('per_page', config('voyager.per_page')));
        
        // 传递页面所需数据
        $this->data['dataType'] = $this->dataType;
        $this->data['dataTypeContent'] = $dataTypeContent;
        $this->data['bread'] = $this->dataType->bread;
        $this->data['title'] = '已发布产品列表';
        
        // 返回Voyager默认的列表视图,保持样式统一
        return view('voyager::bread.browse', $this->data);
    }
}

3. 后台菜单添加入口(可选)

登录Voyager后台,进入「菜单」管理界面,新增一个菜单项:

  • 名称:填写“已发布产品”
  • 路由:选择voyager.products.published
  • 图标:可选择合适的图标(如fa fa-list)
    添加后即可在后台菜单中直接访问该页面。

内容的提问来源于stack exchange,提问作者D .MOTAHARI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:01:00