В 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.
Не забудьте проверить свой код на наличие орфографических и синтаксических ошибок. Приятного кодирования!