Chr*_*itz 1 php laravel laravel-4 mandrill
我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
一切都在测试中很好用,所以现在我已经准备好开始将它构建到我的实际网站工具中了.
我想通过构建一个动态构建有效负载变量的方法来抽象它.
我的问题是,放置此代码的适当位置在哪里?它似乎不应该在它自己的控制器中,因为它是一个可以从其他控制器的不同位置调用的工具.它不是仅与我的数据库中的表进行交互的东西,所以它似乎不应该是一个模型.我应该为它创建一个立面?这堂课应该去哪儿了?
创建服务,假设Mailer在控制器或其他服务中以这种方式使用它:
Mailer::send('emails.greetings', 'Welcome!', $user->email);
Run Code Online (Sandbox Code Playgroud)
你会需要:
看一下这篇文章:http://fideloper.com/create-facade-laravel-4
您可以为服务创建文件夹,如下所示:
app
? ??? App
? ??? Services
? ??? Mailer
? ??? Mailer.php
? ??? MailerServiceProvider.php
? ??? MailerFacade.php
Run Code Online (Sandbox Code Playgroud)
命名空间:
<?php namespace App\Services;
Run Code Online (Sandbox Code Playgroud)
并使用PSR-4通过命名空间自动加载您的类,但将其添加到您的composer.json:
"autoload": {
"psr-4": {
"App\\": "app/App",
},
},
Run Code Online (Sandbox Code Playgroud)
并执行
composer dumpautoload
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |