您好我刚开始使用CodeIgniter框架。我当前的目录结构是
Demo(Project name)
+System
+Application
-Controllers
demo.php
+Model
-Views
view_demo.php
-Js
ajax.js
jquery.js
请告诉我如何在view_demo.php中包含.js文件。
由于 拉吉
答案 0 :(得分:25)
您需要使用base_url()
在您的视图中包含javascript文件。
所以,在view_demo.php文件中:
<script type="text/javascript" src="<?php echo base_url();?>js/jquery.js" ></script>
<script type="text/javascript" src="<?php echo 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
答案 1 :(得分:20)
您不会在PHP中包含JS文件,它们将作为您生成的HTML中的脚本标记输出,您可能将其作为PHP脚本的输出生成。
据我所知,没有内置CodeIginiter函数来包含此输出,就像使用CI提供的link_tag()
函数的CSS一样。我在CI的script_tag()
文件中添加了一个名为system/helpers/html_helper.php
的函数。功能是:
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');
答案 2 :(得分:9)
我将javascript存储在view文件夹的子目录中,因此文件路径与被调用的视图相对,我省略了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;?>
如果您有在每个页面上加载的脚本文件,您可以在页脚视图中对其进行硬编码,如其他答案中所述。
答案 3 :(得分:1)
查看Phil Sturgeon的CodeIgniter模板库。我们在工作中使用它的修改版本。 http://philsturgeon.co.uk/code/codeigniter-template
答案 4 :(得分:0)
只需使用标准:
<script src="/path/to/file.js" type="text/javascript" charset="utf-8"></script>
在你的视野内! (当然不在PHP标记内部。)我不认为CodeIgniter HTML帮助程序有任何可以用来替代自己编写HTML的函数。
答案 5 :(得分:0)
如果您有嵌套视图,并且没有将其作为参数传递给子视图/嵌套视图,则$ 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();
}
?>