我想把最新的招标名单发给我的订户。视图位于公共/邮件/布局下,视图名为tenderlist.php,前端有控制器,名为SiteController,站点文件夹下有视图,名为tenderlist.php。这里的代码运行良好,并给出了投标列表,现在我想使用swiftmailer将投标发送给多个用户,因此,我将页面布局复制到tenderlist.php /layout文件夹。电子邮件配置正确,但我无法将投标列表发送给用户
如果tenderlist.php是纯html代码,也就是静态数据,那么它就可以很好地工作,并发送到电子邮件。
Yii::$app->mailer->compose(['html' => 'layouts/tenderlist'])但是,如果招标列表查询来自数据库,它会给出错误:以下是tenderlist.php的视图代码
//查看邮件/布局下的tenderlist.php页面
<?php foreach ($etender as $post): ?>
<div class="panel panel-default">
<a href="detail?id=<?=html::encode($post['id'])?> "> <?=html::encode($post['bidtitle'])?> </a> </div>
<?php endforeach; ?>//在我的站点中控制器actionTenderlist()
return $this->render('@common/mail/layout/tenderlist', [
'etender'=>$tenders, ]); //当我运行此命令时,它显示错误
Undefined variable: etender发布于 2019-08-13 09:02:46
首先,您需要做的是:高级Yii2应用程序、common/config/main-local.php
'components' => [
//...
'mailer' => [
'viewPath' => '@common/mail',
],
//...
]您的发送邮件功能:
Yii::$app
->mailer
->compose(
[
'html' => 'template-html', //or any sub folder of yor template like "templates/orders/template-html" located in common/mail
'text' => 'template-text',
],
[
//any vars like
'user' => $this->user,
]
)
->setFrom([Yii::$app->params['appEmail'] => Yii::$app->name])
->setTo($this->user->email)
->setSubject($title)
->send()希望能有所帮助。
还确保在将数据传递到邮件模板之前访问数据(或检查数据是否存在)。如果出现任何错误,还要检查您的
frontend/runtime/log/app.log。
感谢穆罕默德·奥马尔·阿萨姆
https://stackoverflow.com/questions/57461000
复制相似问题