2014-06-30 31 views
3

我对Laravel的事件处理程序和监听器有疑问。我不知道从哪里开始。Laravel事件处理程序和监听器

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

任何帮助,将不胜感激;)

回答

7

我最近实施的行动,例如饲料当一个帖子被创建时,一个新用户被注册,或者其他任何东西。每一个动作都会触发一个事件,并且每个事件都有一个监听器,这节省了像“用户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

+1

谢谢!正是我需要:)这使测试我的控制器更容易。 –

+0

嗨@Melvin Koopmans,我想在用户登录时触发一个事件。我使用内置身份验证的laravel 5。我应该在哪里开展活动? –

+0

您可以在控制器中触发事件。当你点击特定的控制器方法时,你可以定义你的事件触发。然后,laravel会自动为你开启你的活动。 – vijayrana