今天遇到了一个问题,在routes/web.PHP中配置了路由,但始终无法访问该路由,一直报404。
Route::resource('gift_packs','GiftPacksController',['only' => ['index','show','create','store','update','edit','destroy']]);
Route::get('gift_packs/test','GiftPacksController@test')->name('gift_packs.test');
然后我在app/Exceptions/Handler.PHP文件中,修改render()方法:
public function render($request,Exception $exception)
{
dd($exception);
return parent::render($request,$exception);
}
把异常打印出来:
No query results for model [App\Models\GiftPack].
先通过 PHP artisan route:list 查看路由列表
| Domain | Method | URI | Name |
| | GET|HEAD | gift_packs/{gift_pack} | gift_packs.show |
| | DELETE | gift_packs/{gift_pack} | gift_packs.destroy |
| | PUT|PATCH | gift_packs/{gift_pack} | gift_packs.update |
| | GET|HEAD | gift_packs/{gift_pack}/edit | gift_packs.edit |
| | GET|HEAD | gift_packs/test | gift_packs.test |
原因是laravel路由访问检测是从上到下的。
针对同路径,gift_packs/{gift_pack} 和 gift_packs/test,当我们访问 /gift_packs/test时,路由 gift_packs/{gift_pack} 已经解析了。
字符串 'test' 无法获取GiftPack模型数据,所以就报错了。
Route::get('gift_packs/test','GiftPacksController@test')->name('gift_packs.test');
Route::resource('gift_packs','destroy']]);
这样就可以了。
原文链接:https://www.f2er.com/laravel/539078.html