卡拉比纳问题 -- Codeigniter库

3
当我使用carabiner库时,我的css和js文件会被添加到页面的顶部。是否有一种方法可以指定文件应该添加到哪里,或者尝试将这些文件作为数组发送到我的视图文件中?谢谢。
2个回答

3

根据您渲染视图的方式略有不同,但是采用常规、平淡无奇的方法,下面是一个例子:

主页控制器:

public function index()
{
  $this->carabiner->css('default.css')
  $this->carabiner->js('custom.js');
  $data['assets'] = $this->carabiner->display_string('both');

  $this->load->view('templates/header', $data);
  $this->load->view('home/index', $data);
  $this->load->view('templates/footer');
}

头部视图:

<html>
<head>
<title>Title of Page</title>
<?php echo $assets; ?>
</head>
...

我只是在我的视图中加载了carabiner,所以它会被添加到正确的位置。 - Zombaya

1

这是我对Carabiner的主要不满之一,即无缓冲输出。每个输出函数都会echo返回值而不是将其返回。

如果不想修改库文件(个人建议),以下是如何实现你所需求的示例:

ob_start();
$this->carabiner->display('css');
$css = ob_get_clean();

现在你有了一个带有js/css标签输出的变量,你可以将其发送到视图文件或模板中。如果没有输出缓冲区,这将立即将标签打印到输出中。请注意,如果需要,另一种解决方法是确保在需要时才调用输出函数,例如在模板本身中。

如果您想永久修复此问题,请通过Carabiner库并将每个echo $some_return_value;实例替换为return $some_return_value;(任何输出函数的最后一行)。这样做需要一些时间,因为有很多实例。

至于返回数组,我不太确定 - 我从未使用过Carabiner(不喜欢它)。希望这同样有所帮助。祝你好运!

了解更多关于输出缓冲区的信息:http://php.net/manual/en/book.outcontrol.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接