Событие Laravel не будет работать

Я настроил событие, которое делает некоторые вещи, когда пользователь регистрируется. Обновление и вставка и т. Д., Но это не сработает.

Я получаю ошибку:

Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR)
Класс ‘EventHandlers \ Handlers \ User’ не найден

Я не знаю, почему это не сработает. Но я ничего не написал с ошибкой, потому что, если я, например, «вернуть» тест «; в моем случае это работает, но это не будет обновлять мою пользовательскую модель

В моем Usercontroller:

$user = User::create([

some values..

]);Event::fire('user.create', $user);

Теперь я подписываюсь на события в моем app / start / global.php, я автоматически загружаю папку с помощью PSR-4

Event::subscribe('EventHandlers\Handlers\UserAccountActions');
Event::subscribe('EventHandlers\Handlers\ProductActions');
Event::subscribe('EventHandlers\Handlers\CommentActions');

И в моем файле события / слушателя

<?php namespace EventHandlers\Handlers;

class UserAccountActions {

// Listeners
public function subscribe($events)
{
$events->listen('user.create', 'EventHandlers\Handlers\UserAccountActions@onCreate');
}

// happens when a user register
public function onCreate($user)
{
$user->api_key = User::createApiKey();
}

}

0

Решение

В вашем EventHandlers\Handlers\UserAccountActions Вы ссылаетесь на User как это было в том же пространстве имен. Вам необходимо добавить обратную косую черту \ чтобы получить доступ к User класс в глобальном пространстве имен:

// happens when a user register
public function onCreate($user)
{
$user->api_key = \User::createApiKey();
}

(Или укажите пространство имен, если User модель в одном. например \Models\User)

В качестве альтернативы вы также можете импортировать модель с помощью оператора use:

use User;

class UserAccountActions {
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]