拉拉维尔事件不起作用


Laravel event won't work

我已经设置了一个事件,一旦用户注册,它就会做一些事情。更新和插入等,但它不起作用。

我收到错误:

Symfony '' 组件 '' 调试 '' 异常 '' 致命错误异常 (E_ERROR)找不到类"事件处理程序''处理程序''用户"

我不知道为什么它不起作用。但是我没有拼错任何东西,因为如果我例如"返回'test';"在我的事件中它可以工作,但它不会更新我的用户模型

在我的用户控制器中:

$user = User::create([
    some values..
]);

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

现在我订阅了我的应用程序/开始/全局.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();
    }
}

在您的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 {