Разрешение ошибки «Цель [Laravel\Fortify\Contracts\CreatesNewUsers] не может быть создана» в Laravel Fortify

В Laravel ошибка «Цель [Laravel\Fortify\Contracts\CreatesNewUsers] не может быть создана» обычно возникает, когда возникает проблема с внедрением зависимостей при использовании Laravel Fortify. Эта ошибка указывает на то, что Laravel не может создать экземпляр интерфейса или абстрактного класса. В этой статье мы рассмотрим несколько способов устранения этой ошибки на примерах кода.

Метод 1: привязка интерфейса к конкретной реализации
Один из способов устранить эту ошибку — привязать интерфейс к конкретной реализации в сервисном контейнере Laravel. Откройте файл App\Providers\FortifyServiceProviderи добавьте следующий код в метод register:

use App\Services\CreatesNewUserImplementation;
use Laravel\Fortify\Contracts\CreatesNewUsers;
// ...
public function register()
{
    $this->app->bind(CreatesNewUsers::class, CreatesNewUserImplementation::class);
}

Обязательно замените App\Services\CreatesNewUserImplementationфактической реализацией интерфейса CreatesNewUsers.

Метод 2: разрешение зависимости вручную
Если вы предпочитаете не привязывать интерфейс к конкретной реализации, вы можете вручную разрешить зависимость в файле app/Actions/Fortify/CreateNewUser.php. Обновите метод createследующим образом:

use Laravel\Fortify\Contracts\CreatesNewUsers;
use App\Services\CreatesNewUserImplementation;
// ...
public function create(array $input)
{
    $user = app(CreatesNewUsers::class)->create($input);
    // ...
}

Метод 3: использование метода make
Вы также можете использовать метод makeLaravel для разрешения зависимости. Обновите файл app/Actions/Fortify/CreateNewUser.phpследующим образом:

use Laravel\Fortify\Contracts\CreatesNewUsers;
// ...
public function create(array $input)
{
    $user = app()->make(CreatesNewUsers::class)->create($input);
    // ...
}

Ошибку «Target [Laravel\Fortify\Contracts\CreatesNewUsers] невозможно создать экземпляр» в Laravel Fortify можно устранить, либо привязав интерфейс к конкретной реализации, вручную разрешив зависимость, либо используя makeметод. Внедрив эти методы, вы сможете преодолеть эту ошибку и продолжить беспрепятственную разработку приложения Laravel.

Не забудьте проверить свой код на наличие орфографических и синтаксических ошибок. Приятного кодирования!