laravel路由无法访问,报404,No query results for model [App\Models\...]

今天遇到了一个问题,在routes/web.php中配置了路由,但始终无法访问该路由,一直报404。

Route::resource(‘gift_packs‘, ‘GiftPacksController‘, [‘only‘ => [‘index‘, ‘show‘, ‘create‘, ‘store‘, ‘update‘, ‘edit‘, ‘destroy‘]]);
Route::get(‘gift_packs/test‘, ‘[email protected]‘)->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‘, ‘[email protected]‘)->name(‘gift_packs.test‘);
Route::resource(‘gift_packs‘, ‘GiftPacksController‘, [‘only‘ => [‘index‘, ‘show‘, ‘create‘, ‘store‘, ‘update‘, ‘edit‘, ‘destroy‘]]);

这样就可以了。

  

原文地址:https://www.cnblogs.com/jkko123/p/10773000.html

时间: 2024-11-07 09:43:32

laravel路由无法访问,报404,No query results for model [App\Models\...]的相关文章

eclipse中配置的tomcat 启动正常 但是访问报404错误

问题描述: 在eclipse中配置的Tomcat,启动是正常的,控制台显示启动成功,也没有报任何错误信息,但是访问的时候就报404错误,然后直接在bin目录下启动startup.bat的方式就是正常的.然后就很纳闷,之后在网上搜了下资料,说是Eclipse的配置出了问题. 解决方案: 1.如果Server里的tomcat启动了,需要先停掉.然后再移除添加的项目 2.之后双击server中配置的tomcat服务器,会弹出如下界面. 3.在Server Locations配置中选择第二个选项,use

spring boot无法启动,或者正常启动之后无法访问报404的解决办法

以前用spring boot都是用idea的自动创建,或者是用的Jhipster创建的,就没有深究怎么去搭建.但是今天晚上心血来潮,想自己搭一个demo来整合一些技术,于是就花一点时间来手动搭.因为今天网络有点不好,所以spring boot的官网一直打不开,也就导致了无法阅读官方文档,就按照自己的记忆去搭于是遇到了以下两个问题 一 启动不了,一直报错,而且报的错很多时候还不一样.我就不列出报的什么错了,spring boot已经这么集成化了,难道我都还要配错?肯定是细节,和代码没有关系.于是找

Tomcat正常启动,访问所有页面均报404异常,404异常总结

今天遇到一个问题:Tomcat正常启动,访问所有页面均报404异常 404异常,很常见,大多情况是路径错误.web.xml文件映射路径写错.服务器设置.servlet的jar包未导进去或者没有随项目发布等等. 如果是路径错误,仔细检查即可解决问题. 服务器没设置好也会报这个错误,这一般是新手刚开始学时遇到的问题,就是要把eclipse中的tomcat的server location设置为use tomcat installation,在eclipse界面双击tomcat server见如图设置:

Eclipse配置tomcat后,启动tomcat,访问tomcat报404错误

当你在Eclipse中新建一个工程,配置好tomcat,然后测试tomcat是否配置成功的时候,报404错误异常. 解决方法: 1,把工程文件删除,重新建立一个新的工程, 2,新建一个工程. 3,New 一个 Server ,配置tomcat. 4,双击 弹出配置页面 在Server Locations配置中选择第二个选项,use tomcat installation ,保存,重新启动Tomcat服务,访问成功 注意: 上面不能进行选择,是置灰的,原因是我在这个服务器上启动过这个项目,只有刚新

eclipse启动tomcat 访问http://localhost:8080 报404错误

eclipse启动tomcat 访问http://localhost:8080 报404错误 Server Locations修改后会变灰,如果需要更改设置,则需要移除与Tomcat服务器关联的项目,同时,鼠标右键菜单Clean清除Tomcat服务器的状态^^就可以修改了.

Laravel 404错误,Laravel根目录可以访问,非根目录就会出现404 页面找不到的错误

Laravel根目录可以访问 Route::get('/', '[email protected]'); 非根目录就会出现404 页面找不到的错误,如下 Route::get('user', '[email protected]'); 解决方法:首先安装前 1,php开启phpopenssl 2,在apache conf开启rewrite莫块模块(#LoadModule rewrite_module modules/mod_rewrite.so) 3,在conf文件中找到directory 把A

eclipse正常启动tomcat, 访问http://localhost:8080 却报404错误

eclipse正常启动tomcat,访问http://localhost:8080 却报404错误 修改下配置 就好操作如下图 打开eclipse的server视图,双击配置好的那个tomcat,出现tomcat配置窗口,看到那个server location 是不是选第一项(默认是第一项),请选到第二项.如果这3项都是灰色的,请删除配置好的tomcat,再重新配置一次,然后再选到第二项.重新启动tomcat问题解决!

spring cloud之坑,访问服务时找不到报404

主要是因为: 启动时 而我访问时,api是按照下面这样访问的: 所以报404找不到 原文地址:https://www.cnblogs.com/grey-wolf/p/8183313.html

lnmp一键安装访问default目录可行,访问其它站点报404错误

1.一键安装lnmp后:访问其他站点,报404错误. 安装lnmp: yum -y install screen wget screen -S lnmp wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp 访问站点,报404错误: 2.检查vi /usr/lo