如何在codeigniter中自动加载js库

时间:2012-05-22 19:57:39

标签: php codeigniter

我是codeigniter的新手。我想在每个页面上加载jquery。我知道我们必须使用autoload.php。但在其中有可以包含静态内容如js或css的部分。这该怎么做?我创建了另一个这样的索引

$autoload['static'] = array(JS_LIBS_PATH.'/jq.js');

但显然什么都没发生。该常量已在config,php中定义。使用相同的常量我可以将jq放在页面上,但是自动加载呢?

3 个答案:

答案 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作为帮助器。

  1. 将jquery文件放在某个地方:/var/www/html/ci3/assets/js/jquery-2.1.4.min.js
  2. 创建文件/var/www/html/ci3/application/helpers/jquery_helper.php(您需要使用_helper.php sufix)。
  3. 在jquery_helper.php文件中调用jquery-2.1.4.min.js文件:
    <script src="assets/js/jquery-2.1.4.min.js"></script>

  4. 在/var/www/html/ci3/application/config/autoload.php里面调用jquery_helper.php:
    $autoload['helper'] = array('jquery'); 现在jquery将自动加载,您可以在所有视图中使用它。