为啥我在 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 服务器错误 [关闭]

为啥不能在 Laravel 5.7 中捕获我定义的 Route 请求的文件 URI?

我在 Laravel 中收到一个不寻常的 url 错误

为啥我会收到 Laravel Composer 解析错误?

为啥在 Laravel 的这种情况下 route() 有效?