为啥我在 Laravel 中收到“Route [/login] not defined 错误”?
Posted
技术标签:
【中文标题】为啥我在 Laravel 中收到“Route [/login] not defined 错误”?【英文标题】:Why am i getting "Route [/login] not defined error" in Laravel?为什么我在 Laravel 中收到“Route [/login] not defined 错误”? 【发布时间】:2019-06-09 08:58:55 【问题描述】:我正在尝试借助 html 表单(刀片文件)和 Maincontroller.php 中的函数上传文件 (.csv)。但是,一旦我在上传文件后按下提交按钮,它就会显示错误“InvalidArgumentException in compiled.php”,然后是“Route [/login] not defined”。
我的 uploadform.blade.php 文件是:
<html>
<body>
<form method="post" action="/upload-file" enctype="multipart/form-data">
<input type="file" name="datafile" />
<button type="submit">Submit!</button>
</form>
</body>
</html>
我的 uploadFile 函数(在 MainController.php 文件中)签名是:
public function uploadFile()
/* ------------------- */
/* I WANT TO REACH HERE */
/* ------------------- */
并且,在路由文件中(即在 web.php 文件中)是:
Route::post('/upload-file', 'MainController@uploadFile');
附带说明,将 post 关键字替换为 get 关键字(在刀片和路由文件中)后,uploadFile 函数正在被触发,但它对我没有用,因为文件上传(和访问 csv 文件数据)不适用于 GET 方法。
【问题讨论】:
你清除了路由缓存吗? @DsRaj 是的,它不会影响任何东西。 更新 action=" action('MainController@uploadFile') " 因为我认为 URL 可能有问题 @DsRaj 刚刚使用 uploadform.blade.php 文件中的 csrf_token 修复了它。认为这不是一个非常明显的解决方案,但已经解决了。谢谢 【参考方案1】:路由 [/login] 未定义。
所以在某个地方(很可能在刀片文件中)你弄错了route('/login')
,应该是route('login')
。
在整个项目中全局搜索/login
并修复它。 :)
还可以通过在控制台/终端中输入 php artisan route:list
来检查此路由是否存在。
| Domain | Method | URI | Name | Action | Middleware |
|--------|-----------|-------|-------|---------------------------------------------------------|------------|
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | login | login | App\Http\Controllers\Auth\LoginController@login | web,guest |
【讨论】:
刚刚使用 uploadform.blade.php 文件中的 csrf_token 修复了它。认为这不是一个非常明显的解决方案,但已经解决了。谢谢【参考方案2】:我建议您的系统上传文件需要用户登录。框架将其重定向到登录路径。
可能你没有 Auth 路由,这就是你得到 404 的原因。
php artisan make:auth
将添加默认路由和视图
然后添加到 routes.php Auth::routes();
(如果不存在)
检查 Laravel 文档:
https://laravel.com/docs/5.7/authentication#authentication-quickstart
【讨论】:
刚刚使用 uploadform.blade.php 文件中的 csrf_token 修复了它。认为这不是一个非常明显的解决方案,但已经解决了。谢谢【参考方案3】:刚刚使用 uploadform.blade.php 文件中的 csrf_token 修复了它。认为这不是一个非常明显的解决方案,但已经解决了。 但是,非常欢迎您对此进行更多解释。 谢谢
【讨论】:
以上是关于为啥我在 Laravel 中收到“Route [/login] not defined 错误”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 laravel 中运行测试时收到“CSRF 令牌不匹配”?
为啥我在作曲家安装后在 Laravel 中收到 500 服务器错误 [关闭]