【发布时间】:2015-10-05 21:24:29
【问题描述】:
我有大约 50 个不同的电子邮件模板,它们的文本会根据收件人的身份而动态变化。我不想为每个可能的案例制作不同的模板并在数十个不同的控制器文件中包含类似的逻辑,而是希望在每个模板中包含一些案例切换并将案例确定变量应用于每封电子邮件。
例如,典型的模板可能如下所示:
<? if ($case) { ?>
<p> text variation 1 </p>
<? } else { ?>
<p> text variation 2 </p>
<? } ?>
$case 将由函数 beforeEmail($to_address) 设置,该函数根据收件人电子邮件对案例进行所有计算。这些计算对于每封电子邮件都是相同的。每次发送电子邮件时,如何让beforeEmail() 被调用?或者更准确地说,在哪里我应该在哪里放置beforeEmail() 函数?
通常我会将这种代码粘贴在视图文件控制器中,但电子邮件视图文件没有控制器。我已经尝试在某处将beforeEmail() 设为静态函数并在每个视图文件中调用它,但这看起来很混乱和错误(它让我在视图文件中调用函数,并在 50 多个文件中重复代码)。
编辑:我也尝试在布局文件中设置$case 变量,但结果是布局是在电子邮件视图文件之后加载的,因此布局内设置的变量不能在视图文件中使用。
【问题讨论】:
标签: php email cakephp cakeemail