CI中自定义url,如static_url()

  • 内容
  • 评论
  • 相关

fd8625b0e800564cfd2bd5d17fdd6d61

使用过CI的同学都知道CI提供了两个常用的url函数,base_url()和site_url(),但是有些时候我们会在根目录设置静态目录static文件夹用来存放项目的css、images和js等等,那么如果在项目中使用到静态目录里的文件的话,就需要经常用base_url()或site_url()进行拼接,这样就会增加了开发的工作量和减低了工作效率。因此我们可以自定义一些url函数直接指向这些比较常用的目录来提供给我们开发项目的时候方便调用。

下面说说如何设置自定义url:

1.首先我们可以在application/helpers/里面新建一个php文件,比如这个文件的是设置自定义url的,那可以命名为MY_url_helper.php。要注意这个MY_前缀要和application/config/config.php中的$config['subclass_prefix']的值要一致,否则这个helper的php文件无法使用。

这里的命名要注意两个地方:

一是不能直接命名为url_helper,这样会和CI的核心system/helpers/url_helper.php发生冲突而导致base_url和site_url无法使用。

二是此处的命名必须在后面加上_helper,否则helper这个目录中的该文件无法被使用。

2.在MY_url_helper.php文件中写如下代码:

<?php
    function static_url($url = '')
    {
        $CI = &get_instance();
        return $CI->config->slash_item('base_url').'static/'.$url;
    }
?>

这段代码中的get_instance()是获取CI中的超级对象(CodeIgniter super object),使用&get_instance()是以传址的方式将地址传给$CI这个变量以代替$this,另外传址比传值更有效率。

slash_item()是在system/core/Config.php里面的方法,他的作用是返回修剪后以"/"结尾的配置信息,
这里主要是用他来拼接static这个目录

接下来就可以在项目中使用static_url()了。

评论

2条评论