我正在尝试构建一个应用程序,强制用户在注册时确认他们的电子邮件。我发送了一封电子邮件,其中包含如下链接:
http://localhost:8000/verifieren/TOKEN&user=USERNAME
现在,当我尝试访问此链接时,屏幕上弹出以下错误:
NotFoundHttpException in Controller.php line 91:
Controller method not found.
从堆栈跟踪中,我得到了以下内容
at Controller->missingMethod(array('verifieren', 'GILDE-jOWPBRhcOW1fUFg77xnb0kgM22CUm4&user=Wesley'))
我认为这意味着它试图调用verifieren
作为一种方法?
这是我正在使用的路线:
Route::get('/verifieren/{{ confirmation_code }}&user={{ username }}', 'Authentication'AuthenticationController@mailConformation');
该路由对应于以下方法:
public function mailConfirmation($code, $username) {
$user = User::where(["confirmation_code" => $code, "username" => $username])->first();
$user->active = '1';
$user->confirmation_code = null;
$user->active_date = date('Y-m-d');
$user->save();
return redirect('/welkom')->with("flash_notice", "account_succesfully_activated");
}
我完全不知道为什么会发生这种情况。我以为可能是其他路线干扰,但事实证明并非如此。
对我来说,这是相当新的东西,所以我可以想象我在代码中犯了一个新手错误。
提前谢谢。
路由和控制器方法名称中的方法名称存在拼写错误
在路由中,方法名称为
@mailConformation
但是在您的控制器中,您的方法名称是
mailConfirmation($code,$username)
因此,将路由中方法名称的拼写更正为:
Route::get('/verifieren/{{ confirmation_code }}&user={{ username }}', 'Authentication'AuthenticationController@mailConfirmation');
更改
http://localhost:8000/verifieren/TOKEN&user=USERNAME
自
http://localhost:8000/verifieren/TOKEN?user=USERNAME
您正在起诉 &而不是 ?
此外,路由中的方法名称是"mailConformation",控制器中的方法名称是"mailConfirmation"
改变
'Authentication'AuthenticationController@mailConformation'
自
'Authentication'AuthenticationController@mailConfirmation'
在您的路线中