自從轉到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輔助函數
 
From:OSChina  

 

    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()