codeigniter 擴展url輔助方法 方便引入css樣式文件

自從轉到Ruby後,有一段時間沒有碰PHP了。

今天用Codeigniter隨便寫點東西。之前看的也都快忘的差很少了  javascript

當我要在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>

很好 很強大,若是你願意的話 你也能夠本身再改進下 php

使用base_url()的時候 別忘了 加載url輔助函數 css

相關文章
相關標籤/搜索