Laravel NotFoundHttpException 尽管路由存在

Posted

技术标签:

【中文标题】Laravel NotFoundHttpException 尽管路由存在【英文标题】:Laravel NotFoundHttpException although route exists 【发布时间】:2015-11-23 02:42:29 【问题描述】:

我使用 vue.js 和 Laravel 5.1 创建了一个小的文件共享应用程序。

一切正常,但现在我想确保每个文件的所有者能够从他的文件中删除用户(当然,他首先必须与这些用户共享文件),因此我向网址为/files/share

我的 Laravel 路由如下所示:

Route::put('/files/share', 'FileController@test');

当我运行 php artisan route:list 时,它也会被列出。

客户端代码如下所示:

this.$http.put('/files/share',  some_data , function(data) 
    if(data.error)
        this.$set('error', data.error);
     else 
        this.$set('file', data);
    
);

我得到的确切错误是:

2/2 NotFoundHttpException in Handler.php line 46:
No query results for model [App\File].
1/2 ModelNotFoundException in Builder.php line 129:
No query results for model [App\File].

但是应用程序甚至没有到达控制器,如果我只是从那里返回一些东西,错误是一样的。

【问题讨论】:

您的路线可能有冲突。像/files/file 这样的东西。对吗? 是的,我有 /filesFileController 的资源,我一直在检查服务器日志和所有内容,但不是最明显的东西 :( 【参考方案1】:

对于 Laravel 路由,顺序很重要。像files/file 这样的动态路由或资源路由应该总是在静态路由之后定义。否则 Laravel 会将 URL 中的 share 部分解释为 ID。

因此,正如您自己发现的那样,您只需要更改路线的顺序即可:

Route::put('/files/share', 'FileController@test');
Route::resource('/files', 'FileController');

【讨论】:

再次感谢,我已经知道这一点,但不幸的是,错误消息让我感到困惑,我检查了所有内容,除了最简单和正确的解决方案。 谢谢@lukasgeiter 它帮助了我。【参考方案2】:

感谢lukasgeiter 我再次检查了我的路由,并且必须在我的 RESTful 资源路由之前定义 /files/share 路由。

【讨论】:

以上是关于Laravel NotFoundHttpException 尽管路由存在的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

laravel和mongo怎么搭配使用