[英]Codeigniter: How to include javascript files
您好,我刚开始使用 CodeIgniter 框架。 我当前的目录结构是
Demo(Project name)
+System
+Application
-Controllers
demo.php
+Model
-Views
view_demo.php
-Js
ajax.js
jquery.js
请告诉我如何在 view_demo.php 中包含 .js 文件。
谢谢拉吉
您需要使用base_url()
在您的 VIEW 中包含 javascript 文件。
因此,在 view_demo.php 文件中:
<script type="text/javascript" src="<?=base_url()?>js/jquery.js" ></script>
<script type="text/javascript" src="<?=base_url()?>js/ajax.js" ></script>
您将需要加载 URL 帮助程序。 要加载助手,您需要将其放在 demo.php 控制器上:
$this->load->helper('url');
您还可以在 helpers 数组上的 \\config\\autoload.php 上自动加载。
有关 base_url() 的更多信息: http : //www.codeigniter.com/user_guide/helpers/url_helper.html#base_url https://codeigniter.com/user_guide/general/styleguide.html#short-open-tags
您不会在 PHP 中包含 JS 文件,它们将在您生成的 HTML 中作为脚本标签输出,您可能会作为 PHP 脚本的输出生成这些标签。
据我所知,没有内置的 CodeIgniter 函数来包含这个输出,就像使用 CI 提供的link_tag()
函数的 CSS 一样。 我在 CI 的system/helpers/html_helper.php
文件中添加了一个名为script_tag()
的函数。 功能是:
if ( ! function_exists('script_tag')) {
function script_tag($src = '', $language = 'javascript', $type = 'text/javascript', $index_page = FALSE)
{
$CI =& get_instance();
$script = '<scr'.'ipt';
if (is_array($src)) {
foreach ($src as $k=>$v) {
if ($k == 'src' AND strpos($v, '://') === FALSE) {
if ($index_page === TRUE) {
$script .= ' src="'.$CI->config->site_url($v).'"';
}
else {
$script .= ' src="'.$CI->config->slash_item('base_url').$v.'"';
}
}
else {
$script .= "$k=\"$v\"";
}
}
$script .= "></scr"."ipt>\n";
}
else {
if ( strpos($src, '://') !== FALSE) {
$script .= ' src="'.$src.'" ';
}
elseif ($index_page === TRUE) {
$script .= ' src="'.$CI->config->site_url($src).'" ';
}
else {
$script .= ' src="'.$CI->config->slash_item('base_url').$src.'" ';
}
$script .= 'language="'.$language.'" type="'.$type.'"';
$script .= ' /></scr'.'ipt>'."\n";
}
return $script;
}
}
然后在您的 PHP 代码中,您可以执行以下操作:
echo script_tag('content/js/jquery-1.4.2.js');
我将我的 javascript 存储在我的视图文件夹的子目录中,因此文件路径是相对于被调用的视图,我省略了 base_url()。
我采用的另一种技术是定义一个脚本数组以包含在我的控制器中,然后在我的视图中循环遍历该数组以包含它们。 这允许我仅在需要时包含特殊的 js 函数。
$data['scripts to load'] = array('edit.js', 'menu.js', 'contact.js');
$this->load->view('myview');
然后在视图中
<?php foreach($scripts_to_load as $script):?>
<script type='text/javascript' src = 'my_js/<?php echo $script;?>'>
<?php endforeach;?>
如果您有在每个页面上加载的脚本文件,您可以在页脚视图中对它们进行硬编码,如其他答案中所述。
如果您有嵌套视图并且没有将它作为参数传递给子视图/嵌套视图, $data 变量有时可能会丢失。
我找到了一个对我来说非常顺利的简单解决方案:
在您当前的视图文件中,您可以像这样设置脚本:
$this->scripts[] = '/js/myscript.js';
在您的页脚或 {whatever.php} 文件中插入以下代码:
<?php
if(isset($this->scripts))
foreach($this->scripts as $script) :
?>
<script src="my_asset_path/js/<?=$script;?>"></script>
<?endforeach;?>
如果您只需要一段 javascript 代码,您可以随时使用这样的匿名函数:
<?php
$this->RenderScript[] = function() {
?>
<script>
console.log('myjavascript code snippet');
</script>
<?}?>
在底部:
<?php
if(isset($this->RenderScript))
foreach($this->RenderScript as $script) {
$script();
}
?>
只需使用标准:
<script src="/path/to/file.js" type="text/javascript" charset="utf-8"></script>
在你的视野中! (当然,不在 PHP 标签内。)我认为 CodeIgniter HTML 帮助程序没有任何功能可以用作替代自己编写 HTML 的功能。
查看 Phil Sturgeon 的CodeIgniter 模板库。 我们在工作中使用它的修改版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.