CodeIgniter加载带变量的文件

时间:2012-03-26 18:57:07

标签: php codeigniter

好的,我正在加载一个用于生成电子邮件的文件。

有没有办法传递变量,并用变量值填充文件,然后将其插入邮件正文中发送?

这是简单的控制器代码:

$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()方法无法做到这一点。也许还有其他解决方案吗?

抱歉英语不好

3 个答案:

答案 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();