Php yii2:如何在邮件中渲染视图

Php yii2:如何在邮件中渲染视图,php,email,yii2,swiftmailer,Php,Email,Yii2,Swiftmailer,我可以使用swiftmailer分机发送邮件。我还可以包含@app/mail文件夹中的视图文件 现在我想知道如何包含模型视图的数据,例如,假设我有一个model City.php和相关视图,如view.php或index.php(网格视图),如何将view.php(单记录)中呈现的数据或index.php中的表数据包含在邮件正文中 简而言之,我想在视图中包含在yii2中呈现的默认数据,或者在邮件正文中包含索引 您好,我看到过这样的示例-Yii::$app->mailer->compose('vi

我可以使用swiftmailer分机发送邮件。我还可以包含@app/mail文件夹中的视图文件

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

简而言之,我想在视图中包含在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_请求_条目是视图文件夹中的文件夹。(不在@app/views中)

但是没能得到它。假设我在/mail/subfolder中的视图名是Say report.php,我在我的视图子文件夹/city/中有一个文件夹,在city文件夹中有view.php和index.php,我如何在示例代码中的参数中指定它

如有任何建议,将不胜感激


谢谢。

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

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

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

var_dump($message);
我修改了控制器中的代码,如下所示:

Yii::$app->mailer->compose('@app/views/medicine-request-entry/view',['model'=>$model])
但我仍然不知道如何使用
@app/mail
中给出的布局,或者如何以html格式发送邮件


谢谢。

对于使用,版面应该在“组件”->“邮件”部分的配置中添加“viewPath”=>“@common/mail”,并在文件夹common/mail/layouts中创建两个文件html.php和text.php。这对我帮助很大,非常感谢@AndreyYaremenko和pawan,虽然这段代码可能会回答这个问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。
\Yii::$app->mailer->htmlLayout = "@app/mail/layouts/html";

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

var_dump($message);