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

Laravel访问自定义trash视图时报View [products.show]不存在如何解决

Laravel 自定义回收站视图报错 View [products.show] not found 解决方案

问题根源

该报错由路由匹配优先级导致:

  • Laravel的资源路由Route::resource('products', 'ProductController')会自动生成7个常规路由,其中包含GET /products/{product}对应控制器的show方法,该路由会匹配products/后面的任意参数
  • 你没有单独定义products/trash路由,且即使定义了如果放在资源路由后面,访问/products/trash时,Laravel会把trash识别为{product}参数,优先匹配到show方法,默认show方法需要返回products.show视图,所以才会出现你没有调用该视图却报错的问题

修复步骤

  1. 调整路由配置,补充trash路由并调整顺序

在web.php中先添加trash自定义路由,再声明资源路由(Laravel路由从上到下匹配,优先级高的路由放前面)

Route::get('/', function () {
    return view('welcome');
});

// 自定义trash路由放在资源路由前
// Laravel 7及以下版本写法:
Route::get('products/trash', 'ProductController@trash')->name('products.trash');
// Laravel 8及以上版本写法(需引入控制器命名空间):
// Route::get('products/trash', [\App\Http\Controllers\ProductController::class, 'trash'])->name('products.trash');

Route::resource('products', 'ProductController');
  1. 确认视图文件路径正确

确保你的trash视图文件路径为resources/views/products/trash.blade.php,如果products文件夹不存在,需要手动创建后再放入trash.blade.php文件。
3. ### 验证路由匹配
运行以下命令查看路由列表,确认products/trash路由排在products/{product}路由前面即可:

php artisan route:list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:21:03