如何定义资产(CSS,JS等)的单独URL,如base_url();在Codeigniter?

时间:2015-10-02 18:24:25

标签: php codeigniter

我得到了这个问题的几个答案,比如在constant.php等中定义它。

但是,它并不能让我满意,我猜其他Codeigniter开发人员也有同感。

任何人都可以帮助我,我再次重复我的问题,

我们如何定义另一个与base_url()相同的函数;在Codeigniter中,我可以将它用于我的资产文件(CSS,JS等)

1 个答案:

答案 0 :(得分:1)

以下是我喜欢处理资产的方式。

我在application / helpers /

中创建了一个名为assets_helper的帮助器
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('css'))
{
    function css($nom)
    {
        return '<link rel="stylesheet" href="' . base_url() . 'assets/css/' . $nom . '.css " type="text/css" media="screen" />';
    }
}

if ( ! function_exists('css_print'))
{
    function css_print($nom)
    {
        return '<link rel="stylesheet" href="' . base_url() . 'assets/css/' . $nom . '.css " type="text/css" media="print" />';
    }
}
//This is only the part that handle css for the example

以下是我使用的完整助手:http://pastebin.com/ujETEXJ4

之后,在与index.php相同的级别创建那些文件夹:

|-Application
|-System
|-index.php
|-Assets
    |- css
    |- sass
    |- images
    |- js

将您需要的所有css文件放入新的css文件夹中。 / js等中的js相同

在我的application / config / autoload.php中,我添加了我的新助手

$autoload['helper'] = array('assets', ...);

最后,在我的页面标题中:

<?php echo css('mycss'); ?> //I did not forgot the extension, it's how it works :)

最后会给出:

<link rel="stylesheet" type="text/css" href="http://www.example.com/assets/css/mycss.css" />

这样我可以轻松地在我的代码中加载任何资源:

css('mycss'); //load css
css_print('mycss'); //css media="print"
js('myjs'); //load js
img('myimg.png') //img tag
img_url('myimg.png') //path to an image

同时

要使其正常工作,请确保在application / config.php中正确设置了base_url

$config['base_url'] = "http://localhost/myawesomesite/";
//No index.php, don't forget the trailing slash!

不要忘记在application / config / autoload.php中加载url帮助器

$autoload['helper'] = array('url', 'assets');