我在Codeigniter中有以下文件结构:
application
system
assets
-- js
-- imgs
-- css
从我读过的内容为了正确链接到这些资产文件,我应该像这样帮忙:
function asset_url(){
return base_url().'assets/';
}
我对Codeigniter和MVC架构完全陌生。请有人解释我是如何做到这一点的。
我是否在application / helpers文件夹中创建一个名为“asset_helper.php”的新文件,然后将上面的代码放入?
然后我在html中写什么链接来说出我的资产文件夹中的css文件?
答案 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')
,同时请注意helper
和library
上的差异是library
是一个类,而{ helper
只是一个包含各种功能的php文件。
答案 2 :(得分:0)
我通常使用
$cssFooPath = $this->config->base_url() . 'css/foo.css';
这样,codeigniter处理基本URL(在html文件中提供绝对路径,并将资产目录放在应用程序的根目录中,就像你一样。 显然也适用于'js / foo.js'或'img / foo.png'。
如果您正在使用apache
,请使用此.htaccessRewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|assets|hg)
RewriteRule ^(.*)$ /index.php/$1 [L]
可以在文件未更改时轻松提供http标头,因为apache将处理所有这些