在Code Igniter中加载javascript

时间:2011-08-23 04:36:45

标签: php jquery codeigniter templates variable-assignment

对于我们的Code Igniter应用程序,我们在关闭正文标记之前加载了所有的javascript。

所以在我们的控制器中我们有

$this->load->view('head', $this->head);
$this->load->view('main_view_for_controller', $data);
$this->load->view('foot', $this->foot);

在脚视图中,我们有一堆<script src="master.js"></script>标签。

这些包括

  • 的jQuery
  • jQuery的UI
  • 共享功能

现在这很有效,直到你认为JS仅用于特定页面或内联js 你不能只是将你的javascript转储到页面的任何地方,因为它通常会使用你在底部加载的部分和部分。

所以我现在所做的是,
我有/application/views/js/,我会有login.php

之类的内容

login.php可能包含例如。

<script>
$(function(){

    var user_id = <?php echo $this->user->get('id'); ?>;
    var return = '<?php echo $return_url; ?>';

    $('#login form').submit(function(){[...]});

    $('#login .facebook').click(function(){[...]});
});
</script>    

所以在我的控制器中我会打电话给     $this->foot['js'][] = javascript('login', array('return_url' => '/users'));

//source of function javascript() from inside a helper
function javascript($file, $config = array()){
    return $this->load->view('js/'.$file, $config, true);
}

然后在我的脚视图中,在所有其他文件(在prod env上合并到一个文件然后缩小)之后我有

foreach($js as $jsOut) echo $jsOut;

只是吐出所有的javascript。

这是最好的方法吗?或者,还有更好的方法? 这看起来有点乱......

1 个答案:

答案 0 :(得分:0)

一个好主意可能是使用页面段来确定要包含的脚本。您可以定义脚本以及它们所属的页面,而不是必须始终填充数组,然后只需检查页面段以确定要包含的JS脚本。阅读URI类here的文档。

所以在你的包含中你会做这样的事情。

<?php if ( $this->$this->uri->rsegment(2) == 'login' ): ?>
// Your login page specific scripts here
<?php endif; ?>

<?php if ( $this->$this->uri->rsegment(2) == 'home' ): ?>
// Your homepage specific scripts here
<?php endif; ?>

将数字2替换为与您所在页面相关的任何分段。