0

我正在尝试根据以下配置设置变量 $purchase 以在我的电子邮件模板中使用:

App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$email->emailFormat('html');
$email->template('new_order_email', 'default');
$email->from(array('info@mydomain.com' => 'A Great Site'));
$email->to($this->request->data['email']);
$email->subject('Order details');
$email->viewVars($purchase);
$email->send();

但是当我尝试在模板中使用 $purchase 变量时,这不起作用。相反,发送的电子邮件包含以下错误:

注意(8):未定义变量:purchase [APP/View/Emails/html/new_order_email.ctp, line 2]

这表明 $purchase 不可用,即使我确实使用 CakeEmail:viewVars(); 设置了该变量;功能。任何想法为什么我会遇到这个问题?

4

3 回答 3

5

用这个:

$email->viewVars(array('purchase' => $purchase));
于 2012-09-30T01:35:00.087 回答
4

最快最短的方法:

$email->viewVars(compact('purchase'));

它会将 var$purchase作为相同的“购买”键传递到电子邮件 viewVars 中,这正是您在这里所需要的。

您还可以通过这种方式快速添加更多变量:

$html = 'foo';
$url = '/my/url';

$email->viewVars(compact('purchase', 'html', 'url'));
于 2012-09-30T07:08:03.903 回答
0

看我的回答这里

$emial->viewVars($valiables);

在您的电子邮件模板中打印此内容。那么您将能够看到所有变量:)

var_dump($this->viewVars);
于 2013-10-31T11:48:03.643 回答