在我的基本控制器中,我有这个代码,它检查是否有视图然后显示它。我想修改它以用于发送电子邮件。我基本上想要创建包含用于发送邮件的html内容的视图。但是试图正常访问它就像我正在显示一个视图一样不太有效。这是在网站上显示视图的代码。
public function view($view, $data = []) {
// check for view file
if(file_exists('../app/views/' . $view . '.php')) {
require_once '../app/views/' . $view . '.php';
} else {
die('View does not exist');
}
}
要显示视图,我只想在我的控制器中执行此操作:
$this->view('pages/contact-us');
当我尝试发送电子邮件时,我想将视图发送到电子邮件正文中。
$html = $this->view('pages/email');
//other variables go here
$send = new Email();
$send->sendMail($html, $subject, $setFrom, $addReplyTo, $addAddress, $altBody);
这样做失败了。我想我只需要返回视图,但不知道该怎么做。
如果我试试这个:
$html = $this->view('pages/contact-email');
我收到此错误:
致命错误:未捕获的异常:< strong>邮件正文为空< / strong>< br />
更新
我将它添加到控制器类:
public function getView($view, $data = []) {
if(file_exists('../app/views/' . $view . '.php')) {
return file_get_contents('../app/views/' . $view . '.php');
} else {
die('View does not exist');
}
}
然后在控制器中执行此操作:
$html = $this->getView('pages/contact-email', $data);
普通的html内容正在显示但不是php。如果我在视图中尝试这个:
<?php echo $data['name']; ?>
没有出现......
答案 0 :(得分:0)
是的,你只需要在视图功能中添加return。 因为实际上你的$ html是空的。
要返回文件内容,您需要先读取文件,例如:file_get_contents(PATH_OF_YOUR_FILE),然后返回变量内的内容。