1

我有一个视图模块,其中包含用于上传文件的 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 代码驻留在内容文件中以使其更易于编码。最好的方法是什么?我需要一个全局数组还是一个新的父控制器?

谢谢!

4

1 回答 1

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.

于 2012-07-18T00:18:45.480 回答