我是codeigniter的新手。我想在每个页面上加载jquery。我知道我们必须使用autoload.php。但在其中有可以包含静态内容如js或css的部分。这该怎么做?我创建了另一个这样的索引
$autoload['static'] = array(JS_LIBS_PATH.'/jq.js');
但显然什么都没发生。该常量已在config,php中定义。使用相同的常量我可以将jq放在页面上,但是自动加载呢?
答案 0 :(得分:2)
我可以想到几个精心设计的解决方案但我真的认为javascript是演示级别的,不应该在你的自动加载,模型,控制器等中。
您可以使用您的<head>
和基本HTML要求的某种主视图文件:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?php echo $title; ?></title>
<script src="/path/to/jquery.js"></script> <!-- jQuery on every page -->
<!-- alternatively, loop through files in a custom config setting -->
<?php foreach (config_item('default_js') as $src): ?>
<script src="<?php echo $src; ?>"></script
<?php endforeach; ?>
<!-- ... and/or loop through files set in a controller -->
<?php foreach ($js_files as $src): ?>
<script src="<?php echo $src; ?>"></script
<?php endforeach; ?>
</head>
<body>
<header />
<?php echo $content; ?>
<footer />
</body>
</html>
然后只需加载这样的视图:
$data['js_files'] = array('draggable.js', 'widgets.js');
$content = $this->load->view('index', $data, TRUE);
$this->load->view('master', array('title' => 'Home', 'content' => $content));
当然这只是数百万中的一种解决方案,但Codeigniter“自动加载”CSS和Javascript的想法毫无意义,你必须以某种方式自己“加载”它 - 如何你这完全取决于你。
答案 1 :(得分:1)
这就是我已经做了一段时间非常有效的事情。
您的资产文件(javascripts,样式表等)会放入资产文件夹/assets/js
,/assets/css
等等。
在配置文件中,您可以定义要加载的JavaScript文件的默认数组。
$config['default_asset_js'] = array('js/jquery.js', 'js/jquery-ui.js');
在您的视图中,您有一个贯穿该数组并输出每个数组的部分。
foreach($this->config-item('default_asset_js') as $file_name)
{
echo '<script src="' . base_url('assets/' . $file_name) . '"></script>';
}
如果您有特定页面需要加载其他文件,您也可以在控制器中获得创意并添加到该阵列。
答案 2 :(得分:0)
在CI中,顾名思义,助手会帮助您完成任务。所以我们可以自动加载jquery作为帮助器。
在jquery_helper.php文件中调用jquery-2.1.4.min.js文件:
<script src="assets/js/jquery-2.1.4.min.js"></script>
在/var/www/html/ci3/application/config/autoload.php里面调用jquery_helper.php:
$autoload['helper'] = array('jquery');
现在jquery将自动加载,您可以在所有视图中使用它。