【问题标题】:CAKE PHP 3.6 setViewVars not passing variables to email templateCAKE PHP 3.6 setViewVars 未将变量传递给电子邮件模板
【发布时间】:2019-08-23 14:12:07
【问题描述】:

在 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 进行回显并得到一个缺少帮助程序的错误。它说找不到助手。

【问题讨论】:

  • 视图变量不是属性,而只是常规变量,即您可以像$variableName 那样访问它们,而不是像$this->variableName 那样访问它们。

标签: php email cakephp cakephp-3.0


【解决方案1】:

您不需要使用$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 -> Email -> Sending Templated Emails

【讨论】:

    猜你喜欢
    • 2015-12-11
    • 2017-11-30
    • 2019-07-25
    • 2015-09-02
    • 2016-10-20
    • 2011-11-30
    • 2017-11-11
    • 2018-02-06
    • 2011-12-26
    相关资源
    最近更新 更多