我已成功将大部分 Laravel 4 应用程序升级到 Laravel 5,但密码重置部分让我遇到了困难。当我尝试发送密码重置电子邮件时,收到此错误:
ErrorException in PasswordBrokerManager.php line 137: call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Auth\Passwords\PasswordBroker' does not have a method 'remind'
这是它不喜欢的代码:
/**
* 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
,现在我收到此错误:
FatalErrorException in EloquentUserProvider.php line 126: Class '\App\User' not found
这是正确的,自从我将它移动到\App\Models 后,我在\App 命名空间中没有类。我怎样才能让它知道它应该寻找\App\Models\User 呢?
最佳答案
您需要在 config/auth.php
文件的 providers
配置值中更改用户模型的完全限定类名:
...
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
...
]
...
除此之外,Laravel 5 已经有了 App\Http\Controllers\Auth\PasswordController
导入 Illuminate\Foundation\Auth\ResetsPasswords
的类处理所有忘记密码功能的特征。
关于php - 将 Laravel 4 密码重置 Controller 升级到 Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843156/