我想使用自己的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;
}
}
然后,在您的 AppServiceProvider
的 register
方法中,您将放置
$this->app->bind(\Illuminate\Contracts\Auth\PasswordBroker::class, \App\Http\Controllers\Auth::class)
这会将您的实现注册到合约中,而不是 Laravel 自己的实现。
关于php - 如何在 Laravel 中扩展 PasswordBroker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36290902/