首页 > 解决方案 > CAKE PHP 3.6 setViewVars 未将变量传递给电子邮件模板

问题描述

在 cake php 3.6 框架中,我正在尝试设置电子邮件模板。

问题是 setViewVars 没有将变量传递给视图。未定义变量:将视图呈现给所有 setViewVars 键时会触发名称。

$this->layout = '/email/html/default';
$enviar = 'Formulário de Franchising: ' . $name . '. Com o Email: ' . $email_add;
$emails = array('andre@dri.pt');
$email = new Email('default');
$email->from([$email_add => $email_add])
    ->template('default')
    ->emailFormat('html')
    ->setViewVars(['name'    => $name,
                   'email'   => $email_add,
                   'phone'   => $phone,
                   'company' => $company,
                   $emailcheck,
                   $smscheck,
                   'message' => $data['message']
    ])
    ->to($emails)
    ->subject('Subscrição Formulário.')
    ->send($enviar);
$this->Flash->success(__('Formulário Enviado. Obrigado!'));
return $this->render('/email/html/default');

想不通问题所在。在控制器端调试所有变量,它们具有正确的值。

编辑: 在视图中,我尝试使用 $this->variable_name 进行回显,并得到一个缺少帮助程序的错误。它说找不到助手。

标签: phpemailcakephpcakephp-3.0

解决方案


你不需要使用$this->variable_name,你可以variable_name在你的视图上直接访问它们

根据Cakephp文档:

您可以设置视图变量Email::setViewViars():

$email = new Email('templated');
$email->setViewVars(['value' => 12345]);

在您的电子邮件模板中,您可以将它们用于:

<p>Here is your value: <b><?= $value ?></b></p>

Cakephp -> 电子邮件 -> 发送模板电子邮件


推荐阅读