[ cakePHP ] cakePHP 101


1. Download

2. point URL to the extract place

3. follow the instruction

– change /app/config/core.php

Configure::write('Security.salt', 'inputwhatever');

Configure::write('Security.cipherSeed', 'caninputonlynumber');

– change /app/config/database.php

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'yourloginhere',
'password' => 'yourpasswordhere',
'database' => 'yourdatabasehere',
'prefix' => '',
//'encoding' => 'utf8',

NOTE : datasource is ‘Database/Mysql’, otherwise get error ‘Cake php Datasource class MySQL could not be found'( ref )

Hello world  ( example adapt from here )

1) create fle cakephp/app/controllers/HelloworldController.php

class HelloWorldController extends Controller {
    public $name = 'HelloWorld'; //Controller name, we need it.
    public $uses=null; //The example doesn't "use" any model.
 // public $autoRender=false; //Do not render template "automatically"
    public function index() {//The default action for a CakePHP controller
    // echo __METHOD__;//This will print HelloWorld suffixed with some more info 😉
    $this->set('message','Hello World'); // set template variable

create file /cakephp/app/view/HelloWorld/index.ctp

<?php echo $message ?>

2) Point URL to http://localhost/cakephp-cakephp-7253405/helloworld

Model Example

Table convention ( from here )
– การสร้าง table และ field ใน database ต้องเป็นไปตามข้อกำหนดของ CakePHP
– table ใน database ต้องเป็นตัวเล็กและเป็นพหูพจน์ คือมี s เติมข้างหลัง เช่น books,categories,articles เป็นต้น
– ถ้ามี 2 คำขึ้นไปให้ใช้เครื่องหมาย _ ในการแยกคำ เช่น user_photos,author_name เป็นต้น
– ใน table ควรจะมี field ชื่อ id ที่เป็น primary key

Model convention

– การตั้งชื่อ filename จะสัมพันธ์กับการตั้งชื่อ database table แต่เป็นเอกพจน์ เช่น database table ชื่อ user_photos การตั้งชื่อของ filename ของ Model คือ user_photo.php
– การตั้งชื่อ class จะใช้อักษรตัวใหญ่ในการแยกคำ และเป็นเอกพจน์ เช่น UserPhoto

Example : table

CREATE TABLE `data_access`.`books` (
`isbn` VARCHAR( 10 ) NOT NULL ,
`title` VARCHAR( 127 ) NOT NULL ,
`description` TEXT NOT NULL ,
`author_name` VARCHAR( 127 ) NOT NULL


class Book extends AppModel{
    var $name ='Book';



class BooksController extends AppController{

    var $name ='Books';
    var $uses =array('Book'); //ประการชื่อ model
    function index(){

        $books = $this->Book->find('all',array('fields',array('Book.isbn','Book.title','Book.author_name'),'order'=>'Book.title ASC'));    //ใช้ object medel ในการดึงข้อมูล

        $this->set('books',$books); //ส่งข้อมูลออกไปให้ view




<?php foreach($books as $book): ?>
<td><?php echo $book['Book']['isbn'] ?></td>
<td><?php echo $book['Book']['title'] ?></td>
<td><?php echo $book['Book']['author_name'] ?></td>
<?php endforeach; ?>

Access Control List(ACL)

AROs(Access Request Objects) ผู้ใช้ แบ่งเป็นระดับย่อยๆได้หลายระดับ
ACOs(Access Control Objects) ทรัพยากรต่างๆของระบบ แบ่งเป็นระดับย่อยได้เช่นกัน

static dir

app/webroot/img, app/webroot/css, app/webroot/js

choose theme

var $view="Theme";
var $theme="ThemeNameNaja";

path will be changed


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s