如何在CodeIgniter 2.1的Views中链接资产(图像,样式表等)?

时间:2011-11-26 11:38:24

标签: codeigniter php

我正在使用CodeIgniter 版本2.1 &尝试使用header.php链接我的视图中的图像,样式表,javascript文件等资源:

<link href="<?php base_url();?>css/style.css" rel="stylesheet" />

我的控制器代码,调用视图:

<?php
class Main extends CI_Controller{
    public function index() {
        $this->load->view('header');
}
  • 我正在尝试加载资产的视图文件 ../application/views/header.php
  • 加载了css文件: ../application/views/css/style.css

这不起作用。我收到了 404 - 找不到页面错误。然后,我尝试将css/style.css移到webroot的../application目录之外。令我鄙视的是,在webroot(outsite ../application/views)中拥有资产似乎很有效。

现在, 我的问题是

  1. 我们的资产是直接在webroot,outsite ../application目录正确的方法吗?如果是/否,那么为什么?
  2. 如果直接在webroot中拥有资源是个好主意,那么我应该在webroot中移动../application/views目录吗?怎么样?
  3. PS:我是CodeIgniter框架的新手,所以不知道最佳做法

3 个答案:

答案 0 :(得分:7)

如果您看到this,那么.htaccess用于从网址中删除index.php的部分,具有重写条件:

 RewriteCond $1 !^(index\.php|images|robots\.txt)

在此行中,图像是一个文件夹,在模块重写时将被忽略。因此,您可以将其替换为资产,将所有直接链接文件放在那里,并愉快地使用它们。

 RewriteCond $1 !^(index\.php|assets|robots\.txt)
编辑:我的不好,没看到问题被问到的日期。然而,应该对某人有用。

答案 1 :(得分:2)

最好将资源放在webroot文件夹中。当从服务器请求assest时(取决于你的设置),它将从根目录开始并继续工作。

http://yoursite.com/application/views/css/mystyles.css

如果它在根目录中你只需要从那里开始

http://yoursite.com/css/mystyles.css

虽然将它们全部放在文件夹(/ assets)中以保持它们包含起来可能是值得的,但是能够编写更有效的重写规则(如果你试图从url中删除index.php)忽略单个文件夹而不是所有单个文件夹(/ css,/ js等)

至于views文件夹,最好将它保留在application文件夹中,因为CodeIgniter有一个内置的加载器,当你使用代码{{1}时,它会自动检查/application/views视图文件}}

虽然有办法移动视图文件夹,但如果您是CI新手,最好暂时将其保留在那里。

答案 2 :(得分:1)

对于链接css,您可以执行以下操作:

echo link_tag('css/mystyles.css');

选中以获取参考:http://codeigniter.com/user_guide/helpers/html_helper.html