CakeEmail::viewVars-CakePHP

CakeEmail::viewVars-CakePHP,email,cakephp,cakephp-2.0,Email,Cakephp,Cakephp 2.0,我正在尝试根据以下配置设置要在电子邮件模板中使用的变量$PUSHARY: 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')

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

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();
但当我尝试在模板中使用$PUSHARE变量时,这不起作用。相反,发送的电子邮件包含以下错误:

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

这表明$purchase不可用,即使我使用CakeEmail:viewVars;作用你知道我为什么会有这个问题吗?

用这个:

$email->viewVars(array('purchase' => $purchase));

最快和最短的方式:

$email->viewVars(compact('purchase'));
它会将var$purchase作为相同的键“purchase”传递到电子邮件viewVars中,这正是您在这里需要的

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

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

$email->viewVars(compact('purchase', 'html', 'url'));
看看我的答案

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

$emial->viewVars($valiables);
var_dump($this->viewVars);