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


How to link assets(images,stylesheet etc) in Views for CodeIgniter 2.1?

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

<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,站点外的../application目录中是正确的方法吗?如果是/否,那么为什么?
  2. 如果在webroot中直接拥有资产是一个好主意,那么我应该在webroot中移动../application/views目录吗?如何?

PS:我是CodeIgniter框架的新手,所以不了解最佳实践

如果您看到这个,使用.htaccess从url中删除index.php的部分具有重写条件:

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

在这一行中,images是一个在mod重写时将被忽略的文件夹。所以,你可以用assets代替它,把所有的直接链接文件放在那里,然后愉快地使用它们。

 RewriteCond $1 !^(index'.php|assets|robots'.txt)

编辑:我的错,没有看到问题被问到的日期。然而,应该对某些人有用。

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

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

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

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

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

至于视图文件夹,最好将其留在application文件夹中,因为CodeIgniter有一个内置的加载器,当您使用代码$this->load->view('myview')

时,它会自动检查/application/views中的视图文件。

虽然有办法移动视图文件夹,但如果你是CI新手,最好现在就把它留在那里。

对于链接css,你可以这样做:

<>之前回声link_tag (css/mystyles.css);之前

查看ref: http://codeigniter.com/user_guide/helpers/html_helper.html