CodeIgniter中的资产

时间:2013-03-10 12:22:15

标签: codeigniter

我在Codeigniter中有以下文件结构:

application
system
assets
-- js
-- imgs
-- css

从我读过的内容为了正确链接到这些资产文件,我应该像这样帮忙:

function asset_url(){
   return base_url().'assets/';
}

我对Codeigniter和MVC架构完全陌生。请有人解释我是如何做到这一点的。

我是否在application / helpers文件夹中创建一个名为“asset_helper.php”的新文件,然后将上面的代码放入?

然后我在html中写什么链接来说出我的资产文件夹中的css文件?

3 个答案:

答案 0 :(得分:1)

是的,正如helpers guide(以及您的问题)中所述,您将函数放在文件名中以application/helpers/结尾的_helper.php下的文件中。一旦你有了它,你将不得不加载

$this->load->helper('asset');

或使用application/config/autoload.php下的自动加载配置。

你可能想要在_helper.php文件中扭曲你的各个函数,如下所示:

if ( ! function_exists('asset_url')) {
    function asset_url() {
        // ...
    }
}

因此,如果名称冲突,您将不会有致命错误。我认为最好知道是否存在冲突,但CI自己的帮助文件会执行此操作,因此您可以使用冲突的名称定义自己的一个或两个帮助程序,同时保留其他帮助文件的完整性。

答案 1 :(得分:1)

一个简单的

<link rel="stylesheet" href="<?=base_url('assets/css');?>" type="text/css">

会做到这一点。

但是如果你想遵循它,你可以将函数直接放在uri_helper上找到的核心system/helpers/url_helper上,或者在application/helper目录上创建一个新的帮助器,注意你必须例如,在最后用_helper命名您的文件 filename_of_myhelper_helper,然后您可以将其加载为$this->load->helper('filename_of_myhelper'),同时请注意helperlibrary上的差异是library是一个类,而{ helper只是一个包含各种功能的php文件。

答案 2 :(得分:0)

我通常使用

$cssFooPath = $this->config->base_url() . 'css/foo.css';

这样,codeigniter处理基本URL(在html文件中提供绝对路径,并将资产目录放在应用程序的根目录中,就像你一样。 显然也适用于'js / foo.js'或'img / foo.png'。

如果您正在使用apache

,请使用此.htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|assets|hg)
RewriteRule ^(.*)$ /index.php/$1 [L]

可以在文件未更改时轻松提供http标头,因为apache将处理所有这些