【问题标题】:Laravel Event Handlers & ListenersLaravel 事件处理程序和监听器
【发布时间】:2014-06-30 22:08:41
【问题描述】:

我有一个关于 Laravel 的事件处理程序和监听器的问题。我不知道从哪里开始。

我想知道究竟什么是事件以及何时使用它们。另外我想知道组织活动和听众的最佳方式是什么,以及将它们放置在哪里(在哪个文件夹中)。

任何帮助将不胜感激;)

【问题讨论】:

    标签: events laravel laravel-4 listeners handlers


    【解决方案1】:

    我最近实施了一个动作提要,例如创建帖子时,注册新用户或其他任何内容。每个动作都会触发一个事件,并且对于每个事件都有一个监听器,它会保存诸如“用户 XY 刚刚注册!”之类的内容。在数据库中。

    非常基础的版本:

    // app/controllers/RegistrationController.php
    class RegistrationController {
        public function register($name) {
            User::create([
                'name' => $name
            });
    
            Event::fire('user.registered', [$name]);
        }
    }
    
    // app/events.php
    Event::listen('user.registered', function($name) {
        DB::table('feed')->insert(
            [
                'action' => 'User ' . $name . ' just registered!'
                // ...
            }
        );
    });
    

    要使用 events.php 文件,将以下行添加到您的 app/start/global.php

    require app_path().'/events.php';
    

    现在您可以将所有事件放在 events.php 中。


    但是如果您要进行很多活动,则不应将所有活动放在一个文件中。见Event Subscribers

    【讨论】:

    • 谢谢!正是我所需要的:) 这使得测试我的控制器变得更加容易。
    • 嗨@Melvin Koopmans,我想在用户登录时触发一个事件。我正在使用内置身份验证的laravel 5。我应该在哪里触发事件?
    • 您可以在控制器中触发事件。当您点击特定的控制器方法时,您可以定义您的事件触发。然后,laravel 会自动为您触发事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多