“Illuminate / Routing / RouteCollection.php”中的MethodNotAllowedHttpException

时间:2018-04-12 18:19:18

标签: php laravel

我有一个会议详细信息页面,用户可以访问此页面而无需进行身份验证。此页面包含以下链接:

<a href="{{route('congress.show', ['id' => $congress->id, 'slug' => $congress->slug])}}">More congress details</a>

并且有这条路线:

Route::get('/congress/{id}/{slug?}', [
    'uses' => 'FrontController@show',
    'as'   =>'congresses.show'
]);

在本次大会详细介绍这个页面上有一些国会的详细信息,在表格下方为用户选择他想要的每个国会票类型的数量。在用户选择数量后,他进入注册页面(registration.blade.php)并返回一个数组,其中包含用户选择的数量到此registration.blade.php。

但是对于用户访问注册页面,他应该进行身份验证,因此有这条路线:

Route::group(['prefix' => '', 'middleware' => 'auth'], function(){
        Route::post('/congress/{id}/{slug?}/registration', [
        'uses' => 'RegistrationController@storeQuantity',
        'as'   =>'congresses.registration'
    ]);
  }

因此,当用户点击“<a href="{{route('congress.show', ['id' => $congress->id, 'slug' => $congress->slug])}}">More congress details</a>”时,在会议详细信息页面中,如果用户未经过身份验证,则会转到登录页面“http://layout.test/login”。

用户登录后会出现错误:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

No message in "Illuminate/Routing/RouteCollection.php"

您知道如何纠正错误吗?

上下文流程:

enter image description here

的LoginController:

class LoginController extends Controller
{
    use AuthenticatesUsers;


    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request, $user)
    {
        return redirect()->intended($this->redirectTo);

    }
}

2 个答案:

答案 0 :(得分:2)

我认为问题是由于您最初尝试发布到/congress/{id}/{slug?}/registration而导致的,但如果他们未登录,则会将其重定向到您的login表单。

当他们登录时,他们会被重定向到目标页面/congress/{id}/{slug?}/registration,但这是POST方法,但此时,Laravel会将您重定向到此页面GET 1}}。

理想情况下,您应该更改代码,以便在用户登录之前不显示提交按钮。您可能还希望为他们提供一个登录按钮来代替购买按钮。

另外,在另一个注意事项中,您可能希望更改您的默认值&#39;如果您没有redirectTo路线,则/属性为/home

答案 1 :(得分:0)

你很可能不存在route / home

请创建

Route::get('/home', [ 
  'uses' => 'HomeController@homeAction'
]);