yii2:如何在邮件中呈现视图

yii2: how to render a view in mail

我可以使用 swiftmailer 扩展程序发送邮件。我还可以包含来自@app/mail 文件夹的视图文件。

现在我想知道如何为我的模型视图包含数据,例如我有一个模型 City.php 和相关视图 view.php 或 index.php(网格视图) 如何在邮件正文中包含 view.php(单个记录)中呈现的数据或 index.php 中的 table 数据。

简而言之,我想在邮件正文的视图或索引中包含 yii2 中呈现的默认数据。

你好,我看过这个例子 - Yii::$app->mailer->compose('viewName', ['variable' => $variable])

另一个例子 - Yii::$app->mailer->compose('contact/html', ['contactForm' => $form])

我试过这样但没有成功:

Yii::$app->mailer->compose('medicine-request-entry/html',['medicine_request_entry'=>$form])

但我收到错误未定义变量形式。 medicie_request_entry 是视图文件夹中的文件夹。(不在@app/views 中)

但无法获取。假设我在 /mail/ 子文件夹中的视图名称是 report.php,我的视图子文件夹 /city/ 中有一个文件夹,在 city 文件夹中有 view.php 和 index.php 我如何指定它在示例代码的参数中。

任何建议将不胜感激。

谢谢。

好的,我找到了解决方案并为遇到同样困难的任何人提供了答案

我修改了控制器中的代码,如:

Yii::$app->mailer->compose('@app/views/medicine-request-entry/view',['model'=>$model])

但我还是没明白,如何使用@app/mail中给出的布局或将邮件发送为html。

谢谢。

\Yii::$app->mailer->htmlLayout = "@app/mail/layouts/html";

$message = Yii::$app->mailer->compose('@app/mail/welcome');

var_dump($message);