为什么我在Laravel中收到“未定义路由[/ login]错误”?

时间:2019-01-15 10:46:22

标签: php html laravel post routes

我正在尝试借助HTML表单(刀片文件)和 Maincontroller.php 中的函数上传文件(.csv)。但是,一旦我在上传文件后按下提交按钮,就会显示错误“ Compiled.php中的InvalidArgumentException”,然后显示“未定义路由[/登录]”。

我的 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方法。

3 个答案:

答案 0 :(得分:1)

  

未定义路由[/登录]。

所以在某个地方(很可能在刀片文件中),您遇到了类似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  |

答案 1 :(得分:1)

我建议您要上传文件,系统需要用户登录。框架会将其重定向到登录路径。 可能您没有Auth路由,这就是为什么得到404的原因。 php artisan make:auth将添加默认路线和视图 然后添加到routes.php Auth::routes();(如果不存在) 查看Laravel文档: https://laravel.com/docs/5.7/authentication#authentication-quickstart

答案 2 :(得分:0)

只需使用 uploadform.blade.php 文件中的 {{csrf_token}} 对其进行修复。认为它不是很明显的解决方案,但已将其修复。 但是,对此表示欢迎解释。 谢谢