将Laravel 4密码重置控制器升级到Laravel 5

时间:2016-01-17 20:15:28

标签: php laravel laravel-5

我已成功将我的Laravel 4应用程序的大部分升级到Laravel 5,但密码重置部分让我很难过。当我尝试发送密码重置电子邮件时,我收到此错误:

  

PasswordBrokerManager.php第137行中的ErrorException:call_user_func_array()期望参数1是有效的回调,类' Illuminate \ Auth \ Passwords \ PasswordBroker'没有方法提醒'

这是它不喜欢的代码:

/**
 * Handle a POST request to remind a user of their password.
 *
 * @return Response
 */
public function postRemind()
{
    switch ($response = Password::remind(Input::only('email')))
    {
        case Password::INVALID_USER:
            return Redirect::back()->with('error', Lang::get($response));

        case Password::REMINDER_SENT:
            return view('notifications.email');
    }
}

为什么这可能不起作用?

修改

Password::remind更改为Password::sendResetLink,现在我收到此错误:

  

EloquentUserProvider.php第126行中的FatalErrorException:Class' \ App \ User'找不到

这是正确的,我在\ App命名空间中没有类,因为我把它移到了\ App \ Models中。我怎么能让它知道应该找到\ App \ Models \ User呢?

1 个答案:

答案 0 :(得分:2)

您需要在config/auth.php配置值的providers文件中更改用户模型的完全限定类名:

...
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    ...
]
...

除此之外,Laravel 5已经有一个App\Http\Controllers\Auth\PasswordController类导入Illuminate\Foundation\Auth\ResetsPasswords特征,该特性处理所有忘记密码的功能。