php - 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 进行回显,并得到一个缺少帮助程序的错误。它说找不到助手。
解决方案
你不需要使用$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>
推荐阅读
- ios - 全局数组不附加
- angular - 为什么我的 Angular KeyValueDiffer 以前的值为 null?
- c# - Visual Studio:使用命名空间添加新类和自动创建文件夹(并将其放在那里)的快捷方式/方法?
- azure - 如何使用 Powershell 将所有机密从一个 Azure Keyvault 复制到另一个
- android - 类型不匹配:推断类型是 BluetoothDevice?但蓝牙设备是预期的
- android - 添加 exoplayer 2.9.6 errtransformClassesWithDexForDebug 后 Androd gradle 错误
- heroku - 更新 heroku 管道环境变量
- python - 为什么我的数据不会在 qt4 中使用 python 绘制到 Canvas 上?我附上了代码
- javascript - 为什么有时异步代码中的错误会导致 node.js 服务器崩溃
- node.js - 如何在nodejs中修复“错误:找不到模块...”