1

CakePHP + timestamp

เวลา save แล้วอยากให้ CakePHP ใส่ timestamp ให้ด้วยเวลาที่ row ที่ add เข้าไปถูก create เป็นครั้งแรก. ประมาณว่าต้องการเก็บว่า row นั้นสร้างมาแต่เมื่อไหร่. ผมใช้ callback function ใน model เอา เขียนสั้นๆ ก็เป็นอันใช้ได้.

class Corpus extends AppModel {
    function afterSave($created) {
        if($this->id && $created) {
            $data = $this->read();
            $data[$this->name]["created"] = date("Y-m-d H:i:s");
            $this->save($data);
        }
    }
}

เวลาสั่ง save จาก controller, afterSave ก็จะถูกเรียกแล้วก็ไปแก้ column: created ให้เป็นเวลาปัจจุบัน. ถ้า row นั้นถูกสร้างขึ้นใหม่ (ตรวจสอบได้จาก $created).

update #1: แต่จะให้ดีใช้ beforeSave ดีกว่า. จะได้ save ครั้งเดียวไปเลย (ตาม comment ของ พี่ป๊อก) แล้วก็ดูเป็นธรรมชาติดีด้วย :-).

class Corpus extends AppModel {
    function beforeSave() {
        $data[$this->name]["created"] = date("Y-m-d H:i:s");
        return true;
    }
}

แต่ถ้า edit แต่ไม่ได้ create corpus ก็คงต้องวิธีมาตรวจสอบเอา.

update #2: ลองดูอีกนิด จริงๆ แล้วไม่ต้องใช้ before/after save เลย. CakePHP ทำ timestamp ให้เองแบบที่ต้องการเลย โดยที่ไม่ต้องทำอะไร … แป่ว

0

CakePHP 1.2 + ภาษาไทย + UTF-8 + MySQL

default encoding ของ MySQL เท่าที่ผมใช้ไม่ได้เป็น UTF-8. เวลาใช้ CakePHP ก็เลยต้องแก้ configuration นิดหน่อยเพื่อทำให้ ใช้ UTF-8 และ MySQL ได้เนียนๆ. ใน CakePHP รุ่นก่อนๆ หน้านี้บางทีก็ต้องไปแก้ AppModel ที่ไม่ค่อยเท่เท่าไหร่ เพราะน่าจะต้องมาแก้อีกเวลา port ไปใช้ database ตัวอื่นที่ไม่ใช่ MySQL.

ใน Cake 1.2.x สามารถตั้งค่า encoding/charset แบบรวมศูนย์ได้ใน app/config/database.php เลย. ตามตัวอย่างแบบด้านล่าง

class DATABASE_CONFIG {

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'your_username',
        'password' => 'your_password',
        'database' => 'my2',
        'prefix' => '',
        'encoding' => 'UTF8' #ดูบรรทัดนี้เป็นสำคัญ
    );

    var $test = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'user',
        'password' => 'password',
        'database' => 'test_database_name',
        'prefix' => '',
    );
}
?>

เพื่อม ‘encoding’ => ‘UTF8′ เข้าไปก็ทำให้ใช้ภาษาไทยและ UTF-8 ได้เนียนๆ แล้ว.

พอมาเปิดใน phpmyadmin ที่ตั้งค่าให้ใช้ UTF-8 และภาษาไทย

ก็แสดงผลออกมาได้ถูกต้อง.

สรุปว่าถ้าอยากใช้ UTF-8 กับ MySQL ใน CakePHP 1.2.x ก็เข้าไปตั้งค่าได้ใน app/config/database.php

อ้างอิง

0

ปรับแต่ง Pluralization บน CakePHP

ก่อนที่จะใช้ CakePHP และ Ruby on Rails ก็คิดว่าโปรแกรมพวกนี้เจ๋งจริงๆ ทำ Pluralization ให้ได้เลย ไม่ใช่แค่เติม s ให้เฉยๆ ด้วย. แต่แล้วพอเอามาทำโปรแกรมก็เจอ corpus -> corpora เข้าไป CakePHP ก็ทำ pluralization ให้ไม่ได้ซะงั้น. แต่ก็ไม่ใช่เรื่องใหญ่แต่อะไร สามารถปรับได้จากไฟล์ app/config/inflections.php

ในกรณีของผม ผมก็เพิม case นี้เข้าไปเลย

 $irregularPlural = array("corpus" => "corpora");

ก็เป็นอันว่าใช้ได้ :-).

0

เรียก cake acl … ได้โดยไม่ต้องแก้ dbo_source.php แล้ว

ทีแรกผมลองเอา code จาก svn trunk (svn co https://svn.cakephp.org/repo/trunk/cake/1.2.x.x cake12) ของ CakePHP มาใช้ ก็ยังไม่ได้แก้อะไร. แต่ถามไปอ่านใน trac เขาก็บอกว่าแก้แล้ว. https://trac.cakephp.org/ticket/3793 ถามต่อไปใน changeset อีก https://trac.cakephp.org/changeset/6312 ทีนี้ก็เห็นแล้วว่า code ส่วนที่แก้อยู่ใน branch …  svn co https://svn.cakephp.org/repo/branches/1.2.x.x cake12. ก็เป็นอันว่าแก้ไปแล้ว.

0

No space left

เวลาไม่มีที่ใน harddisk ใช้แล้ว ไม่รู้ว่าจะลบหรือย้ายอะไรไปเก็บดี. บน Ubuntu 7.10 (GNOME) มีเครื่องช่วยอย่างน่ารักทีเดียว.

แสดงออกมาให้เห็นเลยว่าอะไรใช้พื้นที่เท่าไหร่ คลิกขวาแล้วย้ายลงถังขยะ หรือเปิดดูได้เลยชอบมากๆ. โปรแกรมแบบนี้บน platform อื่นก็มีเหมือนกันกระมัง แต่ชอบ Ubuntu ที่ว่าไม่ต้องตามหามาลงยาก. แบบนี้เรียก out of the box ใช่เปล่า?

0

ฟ้าลง

ปกติเวลาฟ้าลงไกลๆ มักจะคนบอกว่าฟ้าผ่าในทะเล. ผมก็ไม่รู้เหมือนกันว่าในทะเลจริงหรือเปล่า ไม่เคยตามไปดู. มันมักจะมีแสงมาก่อน แล้วก็ค่อยมีเสียงฟ้าร้องตามมา. แต่ก็มีเหมือนกันที่แสงและสีมาพร้อมกัน อยู่นานร่วมชั่วโมงเห็นจะได้ เคยคิดว่าจะไม่รอดเสียแล้ว. แต่ในที่สุดมันก็ผ่านไป หรือผมง่วงมากก็ไม่รู้ผมก็หลับไป. ตื่นเช้าขึ้นมาเครื่องใช้ไฟฟ้าแทบทุกชนิดพังหมด. เปิดไฟ(ให้แสงสว่างไม่ได้) … แน่นอนคอมพิวเตอร์พัง ตู้เย็นก็พัง. …

ผมว่าผมได้ยินประโยคนี้บ่อยๆ “ฟ้าลงแถว …” แต่ว่าเวลา search google กลับเจอไม่ค่อยเยอะเท่าไหร่.