Я пытаюсь создать псевдоним для фасада в пакете Laravel 7.
При тестировании я получаю сообщение:
Ошибка: класс 'MemberRequest' не найден
Тест:
/** @test */
public function a_member_request_can_be_created()
{
$this->assertDatabaseMissing('member_requests', ['created_at' => Date::now()]);
\MemberRequest::create(new CreateMemberRequestRequest(['email_address' => $this->email_address]));
$this->assertDatabaseHas('member_requests', ['created_at' => Date::now()]);
}
Я сделал следующие шаги:
- создаю фасад (расширяя класс фасада с Laravel Осветить
- Зарегистрируйте его у поставщика услуг
- добавьте псевдоним в файл конфигурации
- добавьте псевдоним в файл composer. json
Создайте фасад:
namespace martijn\UMS\Repositories\Facades;
use Illuminate\Support\Facades\Facade;
class MemberRequestRepositoryFacade extends Facade
{
public static function getFacadeAccessor()
{
return 'MemberRequest';
}
}
Зарегистрируйтесь в serviceProvider:
namespace martijn\UMS\Providers;
use Illuminate\Support\ServiceProvider;
use martijn\UMS\Repositories\MemberRequestRepository;
class UMSBaseServiceProvider extends ServiceProvider
{
public function register()
{
$this->registerFacades();
}
private function registerFacades()
{
// Facades
$this->app->singleton('MemberRequest', function () {
return new MemberRequestRepository();
});
}
}
Добавьте его в файл конфигурации:
return [
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'MemberRequest' => \martijn\UMS\Repositories\Facades\MemberRequestRepositoryFacade::class,
]
];
Добавьте его в composer. json:
"aliases": {
"MemberRequest": "martijn\\UMS\\Repositories\\Facades\\MemberRequestRepositoryFacade"
}