我正在使用Laravel4构建网站。这是我的第一个Laravel项目,所以我还在学习如何将所有东西放在一起以及它应该在哪里。
我刚刚将Laravel-Mandrill-Request捆绑包添加到我的网站。我能够从我的测试控制器中的方法发送电子邮件,如下所示:
public function sendMeSomething(){
$payload = array(
'message' => array(
'subject' => 'Greetings!!',
'from_email' => 'xxxx@yyyy.com',
'to' => array(
array('email'=>'aaaa@bbbb.com'),
array('email' => 'cccc@bbbb.com')
),
'global_merge_vars' => array(
array(
'name' => 'time',
'content' => time()
),
array(
"name" => "SenderName",
"content" => "Chris"
)
),
'merge_vars' => array(
array(
'rcpt' => 'aaaa@bbbb.com',
'vars' => array(
array(
'name' => 'firstName',
'content' => 'Christopher'
)
)
),
array(
'rcpt' => 'cccc@bbbb.com',
'vars' => array(
array(
'name' => 'firstName',
'content' => 'Chris!'
)
)
)
)
),
'template_name' => "sk-hello",
'template_content' => array(
array(
'greetings' => 'why hello!'
)
)
);
$result = Mandrill::request('messages/send-template', $payload);
return "check your email. result: " . var_dump($result);
}
测试中一切都很好用,所以现在我已经准备好开始将它构建到我的实际网站工具中了。
我想通过构建一个动态构建有效负载变量的方法来抽象它。
我的问题是,放置此代码的适当位置在哪里?它似乎不应该在它自己的控制器中,因为它是一个可以从其他控制器的不同位置调用的工具。它不是仅与我的数据库中的表进行交互的东西,所以它似乎不应该是一个模型。我应该为它创建一个立面?这堂课应该去哪儿?
答案 0 :(得分:6)
创建服务,假设Mailer
在控制器或其他服务中以这种方式使用它:
Mailer::send('emails.greetings', 'Welcome!', $user->email);
您将需要:
看一下这篇文章:http://fideloper.com/create-facade-laravel-4
您可以为服务创建文件夹,如下所示:
app
│ └── App
│ └── Services
│ └── Mailer
│ ├── Mailer.php
│ ├── MailerServiceProvider.php
│ └── MailerFacade.php
命名他们:
<?php namespace App\Services;
使用PSR-4通过命名空间自动加载您的类,但将其添加到您的composer.json:
"autoload": {
"psr-4": {
"App\\": "app/App",
},
},
执行
composer dumpautoload