什么是CakePHP电子邮件组件中的“模板”?

时间:2013-07-18 08:06:18

标签: cakephp

使用Cake的(2.3)电子邮件类我有点困惑。看来我们可以定义“模板”,“布局”和“主题”,而我只了解布局的用法(位于/ app / View / Layouts / Emails)。

似乎所有内容都可以在布局中定义,但模板看起来确实是必要的(至少是一个空文件),但我不理解上下文,因为对我而言似乎我放入的内容并不重要那里。

这个主题的概念对我来说更加模糊。也许有人可以在这里给我一个提示。我在一个邮件列表中找到了一个讨论,但并没有真正启发。文档也没有透露这一点。

http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

-
编辑:修复了混乱的拼写错误 Edit2:直接使用CakeEmail - 而不是组件。

1 个答案:

答案 0 :(得分:3)

模板是视图(就普通页面而言) 电子邮件的布局是视图的布局(就普通页面而言)

布局应包含一些常见元素,如徽标等

您可以将数据推送到模板,例如推送数据以便从控制器中查看

请检查以下示例:

来自自定义EmailComponent

public function restore_password($user_to_send_restore_link) {
    $email = new CakeEmail('default');
    $email->emailFormat('both');
    $email->template('restore_password', 'emaillayout');

    $email->to(array($user_to_send_restore_link['User']['email']));
    $email->from(array(GENERAL_FROM_EMAIL => 'seqrd support team'));
    $subject = 'Restore password link';
    $email->subject($subject);

    $email_data = array(
        'hash' => $user_to_send_restore_link['User']['hash']);
    $email->viewVars($email_data);

    return $email->send();
}

应用程序/查看/电子邮件/ HTML / restore_password.ctp

<p> Please, follow link <?php echo $this->Html->link('restore password link', Router::url(array('controller' => 'users', 'action' => 'restore_password_form', $hash), true)); ?> to restore password</p>

应用程序/视图/布局/电子邮件/ HTML / emaillayout.ctp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
    <title><?php echo $title_for_layout;?></title>
</head>
<body>
    <?php echo $this->fetch('content');?>

</body>
</html>

主题它是抽象的下一步,在那里你可以快速改变所有电子邮件的整个风格,但不会显着改变代码。

注意:viewVars方法不仅将变量传递到模板中,还传递给电子邮件布局。