2014-06-30 33 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