使用路由参数时未找到控制器方法

时间:2016-03-07 08:40:18

标签: php laravel routing

我正在尝试构建一个应用程序,强制用户在注册时确认他们的电子邮件地址。我发送了一封电子邮件,其中包含以下链接:

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");
}

我完全不知道为什么会这样。我认为可能是其他路线干扰,但事实证明并非如此。

对我来说,这是一个很新的东西,所以我可以想象我在代码中犯了一个菜鸟错误。

提前致谢。

2 个答案:

答案 0 :(得分:1)

路径和控制器方法名称中存在方法名称的拼写错误

在您的路线中,您将方法名称设为

@mailConformation

但是在您的Controller中,您的方法名称是

mailConfirmation($code,$username)

因此,请将路线中方法名称的拼写更正为:

Route::get('/verifieren/{{ confirmation_code }}&user={{ username }}', 'Authentication\AuthenticationController@mailConfirmation');

答案 1 :(得分:0)

更改

http://localhost:8000/verifieren/TOKEN&user=USERNAME

http://localhost:8000/verifieren/TOKEN?user=USERNAME

你在起诉&而不是?

此外,路线中的方法名称为" mailConformation"并且您的控制器中的方法名称是" mailConfirmation"

更改

'Authentication\AuthenticationController@mailConformation' 

'Authentication\AuthenticationController@mailConfirmation'

在你的路线