我正在使用Laravel 5.0并尝试设置一个命令,用于在我的邮件服务中排队作业。
我的问题是我不知道如何将命令调度程序注入我的邮件服务器。
我的结构:
我尝试过的事情:
我尝试在UserMailer类和Mailer类中使用DispatchesCommands特性。我还尝试将\ Illuminate \ Contracts \ Bus \ Dispatcher注入UserMailer类的构造函数。
在所有三个实例中,我收到一条错误,即#34; Class Services \ Mailers \ SendEmail Not Found"
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
答案 0 :(得分: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
正在查看SendEmail
命名空间/文件夹中的Services\Mailers
。