Selected Category: CodeIgniter (6)

View Mode: Post List Post Summary

CodeIgniter的Image_lib可以快速的產生所想要的縮圖,也可以方便的加入浮水印,不過官方原始的類別無法處理PNG的透明背景層,所有含有透明背景的圖片都會變成黑色的背景。

最近剛好使用到也遇到了問題/__\,幸好透過官方的討論區,找到其它玩家的解決方式。你可以從這篇討論文章的串文,看到原文的解決方式,不過我仍然將解決的方式,重新發表在這邊分享給遇到同樣問題的人。

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(41)

The library bug had be find by Tongshuai.It's seem because SESSION problem in different CI version.If you got the same trouble,you can try the solution that Tongshuai's comment (2009-04-24)

由網友Tongshuai測試之後發現有BUG,似乎是SESSION部分出了一些問題,很抱歉我沒有測試各CI版本,或許是CI版本的問題,但是Tongshuai也順便提供了他的解決方法,可以直接參考他的回覆內容(2009-04-24)

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(50)

24bit.jpg 8bit-300x213.jpg

一口一...我用了CI的Image類別,但是上傳後的圖片都失去原始的顏色了!後來記得之前有一本「專業PHP5程式設計指南」有提供縮圖章節,索性就重啃了一遍,其中有一段提到:

imagecreatetruecolor函式是被用來產生出一個準備要放置縮圖的空白圖(以PHP變數的型態存在於記憶體當中),注意涵式名稱所暗示的,這個函數將會產生出一個「真實色彩」(true color) (24位元)的圖,而不會像imagecreate那樣,只能取得「以調色盤為基礎」(palette-based) (8位元)的圖。

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(18)

剛又找到DM1.4.5一個不算是bug的錯誤,那就是save()函式無法儲存使用自訂的id,換句話說DM預定強制限定你的id(PK)欄位必需數字並且自動增值(auto_increment),所以沒辦法使用像是UUID來當做識別碼。
    //建立User物件(create user ORM)
    $u = new User();
    //使用自訂ID(use custom id)
    $u->id = uuid();
    //無法運作(It' can't working)
    $u->save();
@_@真是的,所以我又開始趴原始碼了,找到判斷什麼時候做update什麼時候做insert動作的那部分。 如何做修改呢?(how to fix?) 找到欲修改的行數(find it on line 436 in libraries/datamapper.php)
    if (!empty($data['id'])) 
    {
        //略(ignore)
    }
後來修改程式如下(Fix It!!)
    if (!empty($this->db->get_where($this->table,array('id'=> $data['id']))->num_rows))
    {
        //略(ignore)
    }
現在可以使用自訂的函式或原本的自動增值(It's working well with custom id or auto_increment mode)
    //建立User物件(create user ORM)
    $u = new User();
    //使用自訂ID(use the custom id)
    //若你使用自動增值,你可以略忽下一行(if you use auto_increment mode,you can pass follow line)
    $u->id = uuid();
    //成功運作(It' working well )
    $u->save();
換句話說,改完之後並不影響原本的運作,也就是如果你喜歡自動增值的方式,那就照官方的作法做吧! 還有…以後開始改用GeSHi,理由因是原本的SyntaxHighlighter顯示特別字串時會有問題,像是我如果打empty他顯示都會變成emptyempty兩次@_@,另外一個放棄SyntaxHighlighter原因是他的變色效果,在PHP和Javascript好像都一樣,所以我決定改用GeSHi了。而且GeSHi可接受你使用像是<?php的開頭,SyntaxHighlighter就不行了

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(16)

最近從小海那邊得知CodeIgniter有ORM的library,馬上就去下載試了一下。從文件來看DataMapper比起IgnitedRecord來得詳細多了,不過我覺得IR的名稱比較帥XD,但是我還是選用了DM了。 DM目前最新的版本是1.4.5,看著文件一步一步試著如何使用,可能之前碰過CakePHP,所以用起來相當的容易上手,一下子就差不多看完了,不過在Automated Timestamps那篇章節所說的效果我卡彈了! Automated Timestamps的設定,可以讓每次資料有做異動時,自動更新的異動時間欄位,換句話說就是記錄最後修改時間,但是我試了好幾次都沒有成功,後來我自己試著去debug,發現原來在libraries/datamapper.php的428行遺漏了一個動作。
//原始碼片斷(source)
if ($field == $this->updated_field)
{
    // Update updated datetime
    $this->{$field} = $timestamp;
} 
//修正後的程式碼(fixed)
if ($field == $this->updated_field)
{
    // Update updated datetime
    $this->{$field} = $timestamp;
    // Register changed existing
    array_push($this->changed_existing,$field);
}

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(23)

這個做法是參考此篇「Using Zend Framework with CodeIgniter」修改而來的。 事實上外掛Zend的需要性可能比PEAR還要高,我之所以要外掛PEAR來做是因為CI的分頁類好像有問題@_@,索性就直接使用PEAR的分頁類了,而且PEAR的分頁類還有Jumping和Sliding不同模式可選用,在某些情況下,PEAR的彈性可能比較高。however...看你喜不喜歡多掛一個做同樣事情的library而已。

一、下載PEAR函式庫必要的「PEAR核心檔」即可,然後再下載所需的類別套件,以我為例就是「Pager套件」,最終的資料夾結構大概長這樣

二、將PEAR放到你的applicaiton/libraries/中,在application/libraries/中建立一個新檔,並命名為PEAR.php的類別檔(注意與applicaiton/libraries/PEAR底下的PEAR.php是不一樣的,不要混淆了),內容如下:

Posted by liaosankai at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(19)