php - 如何在 Laravel 中扩展 PasswordBroker?

标签 php laravel laravel-facade

我想使用自己的PasswordBroker,因为默认的PasswordBroker在初始化后无法修改其变量“emailView”。

但我无法在我的自定义类中扩展它。

Class App\Http\Controllers\Auth\MyPasswordBroker cannot
    extend from interface Illuminate\Contracts\Auth\PasswordBroker

这是我的代码:

<?php namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Password;
use Illuminate\Contracts\Auth\PasswordBroker;


class MyPasswordBroker extends PasswordBroker {
    public function setEmailView($view) {
        $this->emailView = $view;
    }
}

最佳答案

因此,在这种情况下,您需要做的是从类扩展,而不是接口(interface)(Laravel 中的 Contract),然后将其绑定(bind)到容器。实现如下所示:

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Support\Facades\Password;
use Illuminate\Auth\Passwords\PasswordBroker;

class MyPasswordBroker extends PasswordBroker 
{
    public function setEmailView($view) 
    {
        $this->emailView = $view;
    }
}

然后,在您的 AppServiceProviderregister 方法中,您将放置

$this->app->bind(\Illuminate\Contracts\Auth\PasswordBroker::class, \App\Http\Controllers\Auth::class)

这会将您的实现注册到合约中,而不是 Laravel 自己的实现。

关于php - 如何在 Laravel 中扩展 PasswordBroker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36290902/

相关文章:

Laravel 5.6 - 在 Controller 中按名称获取路由

php - Laravel Sanctum Token API 身份验证在 Postman 中不起作用

php - 扩展 Laravel 5 的 Response Facade 以包含更多帮助程序?

php - 使用 CSS 定位 PHP 代码

php - 如何显示 "username"表的值?

php - 我如何确定状态并在 PHP MySQL 中执行操作

php - 意外的 T_VARIABLE,期待 T_FUNCTION 修复

php - laravel 5.4 中两种不同的身份验证模型

php - 在 Laravel 7 中找不到类 'Form'

php - 这是否被认为是 Laravel 中的自定义外观方法?