我正在使用 laravel 5,这是我的问题。用户填写表单 X,如果他没有登录,他会被重定向以填写更多字段表单,或者他可以登录。如果用户填写其他字段,一切都正常,但如果他登录,laravel 会重定向用户使用 GET 方法而不是 POST 来形成 X。
这就是我的中间件重定向的样子:
return redirect()->guest('user/additional-fields');
成功登录后会出现此重定向:
return redirect()->intended();
所以在重定向时我收到错误
MethodNotAllowedHttpException。 URL 正确,定义为 POST 方法。我在这里缺少什么?为什么 Laravel 重定向是 GET 方法?我该如何解决这个问题?谢谢!
EDIT:
Route::post('/user/log-in-post', ['as' => 'user-log-in-post', 'uses' => 'UserController@postUserLogIn']);
这是我的路线,希望这是您需要的路线。
您可以使用命名路由来解决此问题:
让我们创建一个像这样的命名路由:
For Get
Route::get('user/additional-fields',array(
'uses' => 'UserController@getAdditionalFields',
'as' => 'user.getAdditionalFields'
));
For post
Route::post('user/additional-fields',array(
'uses' => 'UserController@postAdditionalFields',
'as' => 'user.postAdditionalFields'
));
所以我们现在可以通过这样做来确保 Laravel 使用正确的路线
return redirect()->guest(route('user.getAdditionalFields'));
另请注意,不可能重定向POST
因为 Laravel 期望提交表单。所以你不能这样做:
return redirect()->guest(route('user.postAdditionalFields'));
除非你使用 cURL 或 GuzzleHttp 之类的东西来模拟 post 请求
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)