codeigniter 扩展url辅助方法 方便引入css样式文件

萝らか妹 提交于 2019-11-27 07:15:44
自从转到Ruby后,有一段时间没有碰PHP了。

今天用Codeigniter随便写点东西。以前看的也都快忘的差不多了 

当我要在View层引入style,images,javascript的时候深感不便。翻出手册看了看。
发现了 URL 辅助函数 base_url()

在config.php中把base_url() 配置为网站的根url
然后在项目的根目录新建了public文件夹,然后下面分css,images,javascript三个文件夹
在view层 使用base_url()的话必须得这样
引入css
<link rel='stylesheet' type='text/css' href='<?php echo base_url("/public/css/style.css"); ?>' media='all'>
引入javascript
<script type='text/javascript' src='<?php echo base_url("/public/javascript/jquery.js"); ?>'></script>

如果显示图片
<img src='<?php echo base_url("/public/images/hello.png");?>'/>

每次都要/public/css /public/images /public/javascript
如果下面路径更深的话,很是不方便啊!

顿时感觉弱爆了。有木有......

thinking......

既然config.php下可以配置base_url() 那我可不可以配置个别的呢,行不行先试试再说
迅雷不及掩耳盗铃之势 在base_url的下面配置了三项 格式一模一样 肯定不会错
// these is only a try
$config['style_url'] = 'http://localhost/new/public/css/';
$config['images_url'] = 'http://localhost/new/public/images/';
$config['javascript_url'] = 'http://localhost/new/public/javascript/';
注:http://localhost/new/ 为我的项目url

刷新页面,不好使,报错了,相应的函数不存在,codeigniter在url辅助函数 里实现了base_url方法,
而我们自己配的 style_url images_url javascript_url 并没有自动实现相应的方法

怎么办?

既然这样不行,那就只能扩展url辅助方法了,在system/helpers/下 我发现了 

url_helper.php 文件 打开 搜索 base_url

果然在里面实现了base_url() 
if ( ! function_exists('base_url'))
{
    function base_url($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->base_url($uri);
    }
}

很简单的几行代码,复制代码 粘贴在base_url 函数后面,稍加修改来 实现我自己的url辅助函数
if ( ! function_exists('css_url'))
{
    function css_url($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->base_url("/public/css".$uri);
    }
}

修改下view页面 使用css_url()来加载css文件
<link rel='stylesheet' type='text/css' href='<?php echo css_url("/style.css"); ?>' media='all'>
刷新,效果出来没,  没出来 那是你肯定那个地方出了问题 再仔细检查下

然后 再复制? 实现javascript image  url方法?
这里是框架的核心文件 随便这样修改不好吧!!!! 看下手册 有自定义辅助方法

在/application/helpers/下新建MY_url_helper.php文件
在第一行 加上
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
把刚才实现的css_url函数 从系统的文件中 剪切出来 粘贴到这个文件里

然后同样的再实现javascript_url image_url 方法 注意路径 根据自己的项目 修改路径

到这里 以后引入样式文件  是不是 方便了很多呢

但是我依然不是很满意,还是需要写很长的 link标签 script标签 
虽然我知道有zencoding 但是我还是想用代码来实现。- -!不然怎么装高手

在rails中 可以一个函数搞定。php当然也可以,那就对MY_url_helper.php再改造。
代码很简单,我的代码如下:
if ( ! function_exists('css_url'))
{
    function css_url($uri = '')
    {
        $CI =& get_instance();
        $css_string = "<link rel='stylesheet' type='text/css' href='".$CI->config->base_url("/public/css".$uri)."' media='all'>";
        return $css_string;
    }
}
//---------------------------------
if ( ! function_exists('javascript_url'))
{
    function javascript_url($uri = '')
    {
        $CI =& get_instance();
         $javascript_string = "<script type='text/javascript' src='".base_url("/public/javascript".$uri)."'></script>";
        return $javascript_string;
    }
}

然后在view中  我们直接一个函数加上 短短的文件名 就可以很方便的引入 css javascript

<?php echo css_url("/style.css"); ?>
//<link rel='stylesheet' type='text/css' 

href='http://localhost/new/public/css/style.css' media='all'>

<?php echo javascript_url("/jquery.css"); ?>
//<script type='text/javascript' 

src='http://localhost/new/public/javascript/jquery-1.8.2.js'></script>

很好 很强大,如果你愿意的话 你也可以自己再改进下

使用base_url()的时候 别忘了 加载url辅助函数


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!