2013-03-10 115 views
0

我在笨以下文件结构:资产产生的笨

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

从我读过序正确链接到这些资产的文件,我应该做一个帮手,像这样:

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

我完全不熟悉Codeigniter和MVC体系结构。请有人解释我是如何实现这一目标的。

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

然后我在我的HTML中写入链接来说我的资产文件夹中的CSS文件?

+0

定义**资产**在你的。htaccess,那么它将工作 RewriteCond $ 1!^(index \ .php | robots \ .txt | assets) – 2013-03-10 17:49:25

+0

创建帮助程序不是必需的。 @tomexsans已经回答了你如何以简单的方式实现这一目标。 – 2013-03-10 18:02:06

回答

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

简单

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

会做的伎俩。

但是,如果你想追随它,你可以直接把上system/helpers/url_helper发现了核心uri_helper功能或创建的application/helper目录中的新帮手,请注意,您必须在最后,例如名称以_helper文件 filename_of_myhelper_helper,那么你可以加载它作为$this->load->helper('filename_of_myhelper'),也请记住,helperlibrary上的差异是library是一个类,而helper只是一个具有各种功能的PHP文件。

0

我通常使用

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

这样笨处理基本URL(让你在HTML文件的绝对路径,我把资产目录中,就像你做应用程序的根目录。 同会去 'JS/foo.js' 或 'IMG/foo.png' 明显。

有了这个的.htaccess如果你使用Apache

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

可以很容易地给HT当文件没有改变,因为Apache将处理所有这些文件的tp标题