CodeIgniter - 从内容视图文件在页脚视图中加载脚本

时间:2012-07-18 00:05:34

标签: codeigniter buffer delay

我有一个视图模块,其中包含用于上传文件的html和javascript。我希望脚本能够加载到页脚中(仅作为示例)。所以基本上视图文件应该能够改变页脚或标题的内容。我试图通过首先将页面读入缓冲区然后将内容输出到模板文件来完成此操作。

我的控制器有一个看起来像这样的功能 -

public function test()
{
    ob_start();
    $this->load->view('content');  // uploader module
    ob_end_clean();
    $this->load->view('template', array($out1, $out2));  // ideally this will be output into a template file.  right now i'm just trying to echo it
}

我的上传器模块看起来像这样 -

<div>some div for uploading</div>
<?php $out1 = ob_get_contents(); ?>
<?php ob_clean(); ?>

<script>
Logic for uploading that needs to go in the footer
</script>
<?php $out2 = ob_get_contents(); ?>
<?php ob_clean(); ?>

模板文件看起来像这样 -

<html>
<body>
<?php echo $out1; ?>

<scripts>other javascript code and includes</script>
<?php echo $out2; ?>
</body>
</html>

但是我无法保存缓冲区内容并将其传回控制器($ out1,$ out2)。有谁知道我怎么能实现这个?目标基本上是延迟加载javascript代码,但javascript代码驻留在内容文件中,以便更容易编码。最好的方法是什么?我需要全局数组还是新的父控制器?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在视图之间传递变量,如下所示:

<? ob_start(); ?>
<script type="text/javascript">
  var foo = 66;
  console.log(foo + 16);
</script>
<? $this->load->var('my_script', ob_get_clean()) ?>

如果在视图(或控制器)中运行上述代码^^,缓冲区的内容将在以后加载为$my_script的任何视图中可用。