2016-02-07 20 views
0

我正在使用Laravel 5.0並試圖設置一個命令來排隊我的郵件服務中的作業。在服務中使用命令

我的問題是,我不知道如何將命令調度程序注入我的郵件服務。

我的結構:

  • 服務文件夾
    • Mailer.php(包含抽象類梅勒
    • UserMailer.php(包含類UserMailer擴展了梅勒類)

事情我已經嘗試:

我試圖使用DispatchesCommands的UserMailer類中和梅勒類中的特質。我也嘗試將\ Illuminate \ Contracts \ Bus \ Dispatcher注入到UserMailer類的構造器中。

在所有三種情況下,我得到一個錯誤 「類服務\郵寄包裝\ SendEmail未找到」

Mailer.php:

abstract class Mailer 
{ 
    public function emailTo($view, $mData) 
    { 

    Mail::queue($view, $mData, function($message) use ($mData) 
    { 
     //code here - not relevant 

     } 
    }); 
} 
} 

UserMailer.php:

use Illuminate\Contracts\Bus\Dispatcher as Dispatcher; 

Class UserMailer extends Mailer 
{ 

    protected $bus; 

    function __construct(Dispatcher $bus) 
    { 
    $this->bus = $bus; 

    } 

    public function sendIndividualEmail($members) 
    { 

     // code here not relevant... 

    $this->bus->dispatch(new SendEmail($members)); 

    return true; 
    } 

如何從我的UserMailer類中訪問命令總線? TIA

回答

1

你應該導入完全合格的命名空間路徑爲SendEmail類,例如:

use Illuminate\Contracts\Bus\Dispatcher as Dispatcher; 

use Namespace\To\SendEmail; //<-- Add this "use" statement with correct namespace 

Class UserMailer extends Mailer 
{ 
    //... 
} 

因此,您可以在類中使用new SendEmail($members)。在您的代碼中,PHP正在尋找Services\Mailers命名空間/文件夾中的SendEmail

+0

謝謝,我很感激。這正是我所錯過的。 – retrograde

+0

不客氣:-) –