好的,我正在加载一个用于生成电子邮件的文件。
有没有办法传递变量,并用变量值填充文件,然后将其插入邮件正文中发送?
这是简单的控制器代码:
$var = 'test';
$ci->load->file('Test/view/dialog.php',true);
HTML文件:
<strong><?php echo $var; ?></strong>
请注意,dialog.php文件位于“Test”目录的根目录中,因此我无法使用$ this-&gt; load-&gt; view();
我查看了Loader.php,似乎file()方法无法做到这一点。也许还有其他解决方案吗?
抱歉英语不好
答案 0 :(得分:3)
我建议制作一个模板视图文件,并使用解析器库解析它,并将其结果注入到您的邮件正文中。这样,你就不会将PHP与你的HTML混合使用。 http://codeigniter.com/user_guide/libraries/parser.html
现在,您提供的示例变为:
<?php
$this->load->library('parser');
$message_body = $this->parser->parse('myfile.php',array('var' => 'test'),TRUE); //passing True as the last parameter makes the parser return the string instead of passing it to the output class.
?>
HTML文件:
<strong>{var}</strong>
答案 1 :(得分:1)
最佳方法是使用
$emailBody = $this->load->view('file_name', $data, true);
//file_name of the view to load
//$data you want to pass
// true so it will return as string and not load to browser.
答案 2 :(得分:0)
如果您无法使用视图。您可以在控制器中使用输出缓冲来执行此操作:
$var = 'Test';
ob_start();
include('./Test/view/dialog.php');
$msg = ob_get_contents();
ob_end_clean();