Laravel。重定向旨在发布方法

Eva*_*kus 4 php redirect middleware url-redirection laravel-5

我正在使用laravel 5,这是我的问题。用户填写表格X,如果他未登录,则他将被重定向以填写更多字段表格,或者他可以登录。如果用户填写其他字段,一切正常,但是如果他登录,则laravel重定向用户使用GET方法而不是POST来形成X。

这是我的中间件重定向的样子:

return redirect()->guest('user/additional-fields');
Run Code Online (Sandbox Code Playgroud)

此重定向出现在成功登录时:

return redirect()->intended();
Run Code Online (Sandbox Code Playgroud)

所以在预期的重定向中,我得到错误MethodNotAllowedHttpException。URL是正确的,定义为POST方法。我在这里想念什么?laravel为什么将重定向重定向为GET方法?我该如何解决这个问题?谢谢!

编辑:

Route::post('/user/log-in-post', ['as' => 'user-log-in-post', 'uses' => 'UserController@postUserLogIn']);
Run Code Online (Sandbox Code Playgroud)

这是我的路线,希望这是您需要的。

Eme*_*bah 5

您可以使用命名路由来解决此问题:

让我们这样命名一个路由:

为了得到

Route::get('user/additional-fields',array(
    'uses' => 'UserController@getAdditionalFields',
    'as'   => 'user.getAdditionalFields'
));
Run Code Online (Sandbox Code Playgroud)

邮寄

Route::post('user/additional-fields',array(
    'uses' => 'UserController@postAdditionalFields',
    'as'   => 'user.postAdditionalFields'
));
Run Code Online (Sandbox Code Playgroud)

因此,我们现在可以通过执行此操作来确保Laravel使用正确的路线

return redirect()->guest(route('user.getAdditionalFields'));

另请注意,POST由于Laravel希望提交表单,因此无法重定向。所以你不能这样做:

return redirect()->guest(route('user.postAdditionalFields'));

除了您使用cURL或GuzzleHttp之类的东西来模拟发布请求