php - Laravel 事件不起作用

标签 php mysql events laravel event-listener

我设置了一个事件,该事件在用户注册后执行一些操作。更新和插入等,但不起作用。

我收到错误:

Symfony\Component\Debug\Exception\FatalErrorException (E_ERROR) 未找到“EventHandlers\Handlers\User”类

我不知道为什么它不起作用。但我没有拼写任何错误,因为如果我例如“return 'test';”在我看来,它可以工作,但不会更新我的 userModel

在我的用户 Controller 中:

$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();
    }

}

最佳答案

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

关于php - Laravel 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881715/

相关文章:

php - 如何定位 mysqli 查询返回的特定行

Python AWS lambda 函数连接到 RDS mysql : Timeout error

javascript - Raphael.js 中的火灾事件

C++事件系统设计

php - 模板引擎与 Zend Framework 的优缺点

php - 与 PHP 的 JDBC 连接 URL

mysql order by 标 checkout 现分组依据

javascript - Mouseup 事件与可见性切换冲突

PHP 日志不会忽略 ignore_repeated_errors = On 的重复错误

android - 如何在android studio中从数据库中取消文本转义