我有一个会议详细信息页面,用户可以访问此页面而无需进行身份验证。此页面包含以下链接:
<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"
您知道如何纠正错误吗?
上下文流程:
的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);
}
}
答案 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'
]);