【问题标题】:Upgrading Laravel 4 password reset controller to Laravel 5将 Laravel 4 密码重置控制器升级到 Laravel 5
【发布时间】:2016-04-22 22:35:03
【问题描述】:

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

PasswordBrokerManager.php 第 137 行中的 ErrorException:call_user_func_array() 期望参数 1 是有效的回调,类 'Illuminate\Auth\Passwords\PasswordBroker' 没有方法 '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,现在我收到此错误:

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

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

【问题讨论】:

  • Illuminate\Auth\Passwords\PasswordBroker 中的 password 类中没有 remind。请给我们看那个文件。
  • @Matt 好的,我可以这样做,但它在供应商文件夹中,所以它应该是库存;)
  • @Matt 我想我发现了那个错误,知道这个新错误是怎么回事吗?

标签: php laravel laravel-5


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我知道默认密码控制器,但由于我在 laravel 4 密码控制器中有很多自定义的东西,我想我会在 L5 上转换它;)
  • 我认为可能是这种情况,但认为发布该信息也没有什么坏处:)。
猜你喜欢
  • 2015-04-16
  • 2016-08-18
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2015-04-07
  • 2017-02-24
  • 2017-01-24
  • 2019-03-26
相关资源
最近更新 更多