Cakephp 4.x将变量传递到电子邮件模板

Cakephp 4.x将变量传递到电子邮件模板,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,在CakePHP 4.x中,mailer()函数遇到了一些问题,特别是将变量从控制器传递到模板 我需要一个用户能够收到一个项目列表电子邮件。我可以使用ajax将数组发送到控制器,但我无法让控制器将变量传递到电子邮件模板。我收到的是电子邮件,但不是动态内容,我只是无法通过setViewVars让它工作 我的控制器功能: public function bar(): void { if( $this->request->is('ajax') ) { $this->request-

在CakePHP 4.x中,mailer()函数遇到了一些问题,特别是将变量从控制器传递到模板

我需要一个用户能够收到一个项目列表电子邮件。我可以使用ajax将数组发送到控制器,但我无法让控制器将变量传递到电子邮件模板。我收到的是电子邮件,但不是动态内容,我只是无法通过setViewVars让它工作

我的控制器功能:

public function bar(): void
{
if( $this->request->is('ajax') ) {

$this->request->allowMethod('ajax');
$foo = $this->request->getQuery('data');
// data is a stringified array

$mailer = new Mailer("default");
  $mailer->viewBuilder()->setTemplate('default','default');
  $mailer
   ->setEmailFormat('html')
   ->setFrom(['email@email.com' => 'Comparaciones'])
   ->setTo('email@email.com')
   ->setSubject('About')
   >setViewVars($foo)
  ->send();
// ->deliver() doesn't work either
}
}
我的模板:

// standard cakephp default template
$content = explode("\n", $content);

foreach ($content as $line) :
    echo '<p> ' . $line . "</p>\n";
endforeach;
//标准cakephp默认模板
$content=explode(“\n”,$content);
foreach($行内容):
回音“”$线路。“

\n”; endforeach;

我可能被一些简单的东西绊倒了,我只是无法将数组放入模板中。非常感谢任何帮助

似乎您认为
setViewVars
在模板中设置了一个名为
$content
的变量?如果您希望它像那样工作,请使用
->setViewVars(['content'=>$foo])
。就像控制器中的
->set
和模板中的
->element
一样。非常感谢Greg!那很有魅力!!