0

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

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

从我读过的内容来看,为了正确链接到这些资产文件,我应该像这样创建一个助手:

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

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

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

那么我在我的html中写什么来链接到我的资产文件夹中的一个css文件?

4

3 回答 3

1

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

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

或者使用application/config/autoload.php.

您可能希望_helper.php使用这样的 if 来扭曲文件中的各个函数:

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

因此,在名称冲突的情况下,您不会出现致命错误。我认为最好知道是否存在冲突,但是 CI 自己的帮助文件会这样做,因此您可以使用冲突名称定义自己的一两个帮助者,同时让同一个帮助文件中的其他人保持原样。

于 2013-03-10T13:41:21.447 回答
1

一个简单的

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

会成功的。

但是如果你想跟着它,你可以直接把函数放在coreuri_helper上找到system/helpers/url_helper或者在目录上创建一个新的helper application/helper,注意你的文件必须以a_helper结尾,example filename_of_myhelper_helper,然后你可以加载它$this->load->helper('filename_of_myhelper'),还要记住,和的区别helper在于libraryalibrary是一个类,而 ahelper只是一个具有各种功能的 php 文件。

于 2013-03-10T13:41:32.130 回答
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 将处理所有这些

于 2013-03-10T13:56:24.237 回答