2015-11-10 35 views
0

我正在通過重構和使用事件清理我的長控制器方法。活動::訂閱位置Laravel 4

不幸的是,我不確定我在哪裏或者如何註冊一個事件訂閱者來讓我的事件觸發。

我發現了兩個很有幫助的教程vegbitCulttt但我仍然感到困惑。

我已成立了一個專門的EmailEventHandler類

namespace Vault\Events; 

use Vault\Repository\IndividualEmailRepositoryInterface as IndividualEmailRepositoryInterface; 

    protected $individualEmail; 

public function __construct(IndividualEmailRepositoryInterface $individualEmail) 
    { 
    $this->individualEmail = $individualEmail; 
    } 

Event::subscribe('EmailEventHandler'); 

class EmailEventHandler { 


    public function subscribe($events) 
    { 
    $events->listen('email.saveIndividual', '[email protected]'); 
    } 

    public function saveIndividual($events) 
    { 
     $save = $this->individualEmail->store($events); 
    } 
} 

做完這些後,我想我能夠與事件::消防訪問事件類。這裏是我的控制器功能:

use Vault\Services\Mailers\UserMailer; 

class ContractorController extends BaseController { 

protected $mailer 

    public function __construct(UserMailer $mailer) 
    { 
     $this->mailer = $mailer 
    } 

    public function postIndividualEmail(){ 

    $file = Input::file('file'); 
    $subject = Input::get('subject'); 
    $message = Input::get('message'); 
    $memberString = Input::get('contractorName'); 

    //use mail service to send email 
    $upload = $this->mail->sendIndividualEmail($memberStringer, $subject, $message, $file); 
     if($upload['emailCount'] >= 1){ 

      //if mail has been sent, fire event 
      Event::fire('email.saveIndividual', $upload); 

     } 

...the rest of code 

    return Response::json($this->arrResponse);  

} 
} 

任何人都看到我失蹤了嗎? TIA

+0

爲什麼在文件中間的'類EmailEventHandler'定義是什麼?它應該在'use'語句下面。 – Bogdan

回答

0

我首先想到的是,你必須將__construct函數中訂閱您的活動,如:

public function __construct(IndividualEmailRepositoryInterface $individualEmail) 
    { 
    $this->individualEmail = $individualEmail; 
    Event::subscribe('EmailEventHandler'); 
    }