ก่อนหน้านี้เรามีปัญหาว่ามีบทความว่างๆ อยู่ http://code.google.com/p/basaasa/issues/detail?id=2 ล่าสุดผมพยายามจะแก้ปัญหานี้โดยเพิ่มส่วน validation เข้าไปในโปรแกรม ถ้าหากว่ากด save โดยที่ body หรือ title ว่างๆ อยู่ โปรแกรมจะยังไม่จัดเก็บข้อมูล แต่จะขอให้กรอกข้อมูลให้ครบก่อน
การใส่ validation ใน CakePHP ก็ง่ายๆ แต่ว่าผมพึ่งทำเป็น สมมุติว่าเราจะแก้ model ของ Article ก็แก้ไฟล์ app/models/article.php แล้วก็เพิ่ม $validate เขาไปใน class Article
class Article extends AppModel
{
var $validate = array("title" => VALID_NOT_EMPTY,
"body" => VALID_NOT_EMPTY);
....
....
....
}
แบบนี้เป็นต้น
แสดงบทความที่มีป้ายกำกับ Basa-Asa แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Basa-Asa แสดงบทความทั้งหมด
วันจันทร์ที่ ๙ กรกฎาคม พ.ศ. ๒๕๕๐
วันเสาร์ที่ ๙ มิถุนายน พ.ศ. ๒๕๕๐
How to install Basa-Asa
ยังไม่มี stable release เราก็เลยต้อง check out จาก Subversion
$ svn checkout http://basaasa.googlecode.com/svn/trunk/ basaasa
A basaasa/trunk
A basaasa/basa
A basaasa/basa/app
.... (ยาว)
(แต่ถ้าได้แบบ
$ svn
-bash: svn: command not found
ก็อาจจะเป็นไปได้ว่ายังไม่ได้ลง subversion ก็สามารถหาดาวน์โหลดมาลงได้ทั่วไป)
เสร็จเราก็จะได้โฟลเดอร์ชื่อ basaasa ออกมา
ใน basaasa ก็จะมีโฟลเดอร์ชื่อ basa อยู่ข้างในอีกที
ขั้นตอนต่อไปก็คือ ย้าย basa ไปไว้ในโฟลเดอร์สำหรับเว็บ
ถ้าเป็น Debian หรือ Ubuntu ก็อยู่ที่ /var/www
ถ้าเป็น Windows ก็อาจจะเป็น c:\inetpub\wwwroot
$ mv basaasa/basa /var/www
ถ้าย้ายไม่ได้ก็ต้องแก้ permission หรือว่าสั่ง sudo อะไรก็ว่ากันไป
ย้ายไปแล้ว พอเปิดเว็บ เช่น http://localhost/basa ก็ควรจะมีหน้าจอของ
Basa-Asa ขึ้นแล้ว แต่ว่าจะมี error message บอกว่าหาฐานข้อมูลไม่เจอ
หรือว่า เขียนไฟล์ไม่ได้เป็นต้น แต่ถ้าเปิดไม่ขึ้นเลยก็ต้องลองดู
Apache แล้วว่ารันอยู่หรือเปล่า

ขั้นตอนต่อไปคือการตั้งค่าฐานข้อมูล (โดยที่เราสมมุติว่าใช้ MySQL
ได้อยู่แล้ว และ username คือ root)
ก่อนอื่นย้ายไปโฟลเดอร์ที่ Basa-Asa อยู่ก่อน
$ cd /var/www/basa
แล้วก็สร้างฐานข้อมูล
$ mysql -uroot -e 'create database basa;'
$ mysql -uroot basa < mysql.sql
แล้วก็ต้องแก้ไขไฟล์ของ CakePHP นิดหน่อย
$ vim app/config/database.php
เราก็ไปแก้พวกนี้ (ได้แก่ host, login, password) ให้ตรงกับในเครื่องเรา
var $default =
array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => '127.0.0.1',
'login' => 'root',
'password' => '',
'database' => 'basa',
'prefix' => 'basa_');
หมดขั้นตอนของฐานข้อมูลแล้ว ก็แก้ file permission เล็กน้อย
$ chown -R www-data app/tmp
เพื่อที่ Apache จะได้มาเขียน log ไฟล์ cache ฯลฯได้ แน่นอนเครื่องต่างๆ
อาจจะไม่ได้ใช้ username ชื่อ www-data หมด แต่ www-data นี่ของ Debian
เท่านี้มันก็น่าจะเริ่มใช้แล้ว ขาดแต่ยังไม่มี user และ group
เราก็เข้าไปใน MySQLl
$ mysql -uroot basa
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 151
Server version: 5.0.37 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
ที่ prompt ของ MySQL เราก็เพิ่ม group ได้
mysql> insert into zooid_groups(id,name) values(1,'Admin');
Query OK, 1 row affected (0.09 sec)
mysql> insert into zooid_groups(id,name) values(2,'Translator');
Query OK, 1 row affected (0.09 sec)
จากนั้นก็ user แต่ user เพิ่ม admin คนเดียวก็พอ
insert into zooid_users(username, password, group_id) values ('root', md5('yourpassword'), 1);
Query OK, 1 row affected, 2 warnings (0.36 sec)
เสร็จแล้ว (ผมลืมอะไรไปหรือเปล่า?) สำหรับ Apache และ PHP ต้องลง mod_rewrite และ php-gd ด้วย
$ svn checkout http://basaasa.googlecode.com/svn/trunk/ basaasa
A basaasa/trunk
A basaasa/basa
A basaasa/basa/app
.... (ยาว)
(แต่ถ้าได้แบบ
$ svn
-bash: svn: command not found
ก็อาจจะเป็นไปได้ว่ายังไม่ได้ลง subversion ก็สามารถหาดาวน์โหลดมาลงได้ทั่วไป)
เสร็จเราก็จะได้โฟลเดอร์ชื่อ basaasa ออกมา
ใน basaasa ก็จะมีโฟลเดอร์ชื่อ basa อยู่ข้างในอีกที
ขั้นตอนต่อไปก็คือ ย้าย basa ไปไว้ในโฟลเดอร์สำหรับเว็บ
ถ้าเป็น Debian หรือ Ubuntu ก็อยู่ที่ /var/www
ถ้าเป็น Windows ก็อาจจะเป็น c:\inetpub\wwwroot
$ mv basaasa/basa /var/www
ถ้าย้ายไม่ได้ก็ต้องแก้ permission หรือว่าสั่ง sudo อะไรก็ว่ากันไป
ย้ายไปแล้ว พอเปิดเว็บ เช่น http://localhost/basa ก็ควรจะมีหน้าจอของ
Basa-Asa ขึ้นแล้ว แต่ว่าจะมี error message บอกว่าหาฐานข้อมูลไม่เจอ
หรือว่า เขียนไฟล์ไม่ได้เป็นต้น แต่ถ้าเปิดไม่ขึ้นเลยก็ต้องลองดู
Apache แล้วว่ารันอยู่หรือเปล่า
ขั้นตอนต่อไปคือการตั้งค่าฐานข้อมูล (โดยที่เราสมมุติว่าใช้ MySQL
ได้อยู่แล้ว และ username คือ root)
ก่อนอื่นย้ายไปโฟลเดอร์ที่ Basa-Asa อยู่ก่อน
$ cd /var/www/basa
แล้วก็สร้างฐานข้อมูล
$ mysql -uroot -e 'create database basa;'
$ mysql -uroot basa < mysql.sql
แล้วก็ต้องแก้ไขไฟล์ของ CakePHP นิดหน่อย
$ vim app/config/database.php
เราก็ไปแก้พวกนี้ (ได้แก่ host, login, password) ให้ตรงกับในเครื่องเรา
var $default =
array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => '127.0.0.1',
'login' => 'root',
'password' => '',
'database' => 'basa',
'prefix' => 'basa_');
หมดขั้นตอนของฐานข้อมูลแล้ว ก็แก้ file permission เล็กน้อย
$ chown -R www-data app/tmp
เพื่อที่ Apache จะได้มาเขียน log ไฟล์ cache ฯลฯได้ แน่นอนเครื่องต่างๆ
อาจจะไม่ได้ใช้ username ชื่อ www-data หมด แต่ www-data นี่ของ Debian
เท่านี้มันก็น่าจะเริ่มใช้แล้ว ขาดแต่ยังไม่มี user และ group
เราก็เข้าไปใน MySQLl
$ mysql -uroot basa
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 151
Server version: 5.0.37 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
ที่ prompt ของ MySQL เราก็เพิ่ม group ได้
mysql> insert into zooid_groups(id,name) values(1,'Admin');
Query OK, 1 row affected (0.09 sec)
mysql> insert into zooid_groups(id,name) values(2,'Translator');
Query OK, 1 row affected (0.09 sec)
จากนั้นก็ user แต่ user เพิ่ม admin คนเดียวก็พอ
insert into zooid_users(username, password, group_id) values ('root', md5('yourpassword'), 1);
Query OK, 1 row affected, 2 warnings (0.36 sec)
เสร็จแล้ว (ผมลืมอะไรไปหรือเปล่า?) สำหรับ Apache และ PHP ต้องลง mod_rewrite และ php-gd ด้วย
วันศุกร์ที่ ๘ มิถุนายน พ.ศ. ๒๕๕๐
CakePHP: Logging for debugging
หลังจากที่ผมนั่งงงมาตั้งนานว่า ถ้าอยากจะ debug CakePHP โดยการเก็บ log
ไว้จะทำอย่างไร ยกตัวอย่างเช่น เวลาผมจะดูว่า ใครพยายามจะ แก้ไข article
บ้างก็ต้องเข้า log ใน ArticlesController::edit
วิธีการก็ง่ายๆ เพียงแต่ใส่ code แบบข้างล่างเข้าไปก็จะเกิดการเขียน log
ขึ้นที่ app/tmp/logs/debug.log
$this->log("ทดสอบ", LOG_DEBUG);
แต่ว่าแบบนี้มันก็ไม่มี username ใช่ปะก็แก้ง่ายๆ
$this->log("พยายามแก้ไขโดย " . $this->getUsername() , LOG_DEBUG);
แล้วก็แอบเอา log มาเปิดให้ดูนึดนึง (ในเครื่องผมนะ)
ซะเลย :-P
ไว้จะทำอย่างไร ยกตัวอย่างเช่น เวลาผมจะดูว่า ใครพยายามจะ แก้ไข article
บ้างก็ต้องเข้า log ใน ArticlesController::edit
วิธีการก็ง่ายๆ เพียงแต่ใส่ code แบบข้างล่างเข้าไปก็จะเกิดการเขียน log
ขึ้นที่ app/tmp/logs/debug.log
$this->log("ทดสอบ", LOG_DEBUG);
แต่ว่าแบบนี้มันก็ไม่มี username ใช่ปะก็แก้ง่ายๆ
$this->log("พยายามแก้ไขโดย " . $this->getUsername() , LOG_DEBUG);
แล้วก็แอบเอา log มาเปิดให้ดูนึดนึง (ในเครื่องผมนะ)
ว่าแล้วก็ commit code เข้า SVN ที่ http://code.google.com/p/basaasa
2007-06-08 15:06:42 Debug: พยายามแก้ไขโดย vee10
2007-06-08 15:07:17 Debug: พยายามแก้ไขโดย anonymous
ซะเลย :-P
สมัครสมาชิก:
บทความ (Atom)