当我使用carabiner库时,我的css和js文件会被添加到页面的顶部。是否有一种方法可以指定文件应该添加到哪里,或者尝试将这些文件作为数组发送到我的视图文件中?谢谢。
根据您渲染视图的方式略有不同,但是采用常规、平淡无奇的方法,下面是一个例子:
主页控制器:
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的主要不满之一,即无缓冲输出。每个输出函数都会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