CakePHP:在Model中生成CakeEmail模板输出

时间:2016-07-08 23:34:46

标签: cakephp

我正在构建一个延迟的电子邮件发送脚本。每当我安排一封电子邮件时,我都希望继续将所有发送电子邮件所需的信息(包括,主题,内容等)放在数据库表中。这样我的电子邮件发送脚本可以做一件事;发送电子邮件。它不必打扰不同的视图,设置正确的视图变量,查看变量等。每个模板将有不同的视图变量,我不想在发送电子邮件cron中处理所有这些。所以,假设我想安排一封欢迎电子邮件:

// Schedule the welcome email from anywhere
$this->EmailLog->scheduleWelcomeEmail($member_id);

// EmailLog model
public function scheduleWelcomeEmail($member_id) {
    // lookup $member_id
    // uses 'welcome' template

    $data = array(
        'subject' => 'Welcome',
        'to' => $member['Member']['email'],
        'html' => // NEED RENDERED DATA FROM 'welcome' TEMPLATE
    );

    $this->create();
    $this->save($data);// SAVE the row - DO NOT actually send email
}

然后,在后台运行的cron将只从表行中获取未发送的电子邮件,设置相应的参数并发送它。

那么,如何在模型中获取保存在变量中的渲染视图数据?或者,有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

嗨,这是从Model In Cakephp发送电子邮件的错误方式,我们无法在模型中访问或呈现视图。因此,请使用另一种方法,您可以使用cakephp shell发送电子邮件。 您可以在下面链接中阅读cakehall

http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html

http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html