【问题标题】:Post request not working in Laravel发布请求在 Laravel 中不起作用
【发布时间】:2018-10-06 02:57:57
【问题描述】:

我是 Laravel 的新手,正在尝试做一个简单的 post 请求,但它不起作用。重定向到/o2 后显示object not found。有人可以解释一下吗?我也在使用CSRF Token,但事情不正常。使用 Laravel v5.2。

 Route::get('/o1', function(){
   echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
});

Route::post('/o2', function(){
   echo "It works";
});

【问题讨论】:

    标签: laravel


    【解决方案1】:

    您正尝试在浏览器中访问发布路线以打印表单。这是行不通的。您需要创建一个获取路径来打印表单,然后将操作设置为发布路径。试试这样的:

    Route::get('/o1', function(){
       echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
    });
    
    Route::post('/o2', function(Request $request) {
       echo $request->all();
    });
    

    【讨论】:

    【解决方案2】:

    当你得到 MethodNotAllowedHttpException 时,你是如何调用这个路由的?

    此发布请求应由您正在创建的实际表单调用。 并且一般不应该返回实际的表单,而是持久化数据,然后将用户重定向到页面以显示结果。

    所以一般来说,你会有一个 get 和一个 post:

    Route::get('/o1', function(){
       echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
    });
    
    Route::post('/o1', function(){
       // persist your form here
    });
    

    我强烈建议为此使用控制器。 https://laravel.com/docs/5.6/controllers

    【讨论】:

    • 我对上面的问题做了修改,还是不行,请看上面。
    猜你喜欢
    • 2021-11-17
    • 2015-11-13
    • 2019-01-27
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多