====== CakePHP ====== ===== Usage (after install) ===== The examples below are from a working cakeblog tutorial: http://manual.cakephp.org/appendix/blog_tutorial ==== Create Models for Database Tables ==== * singlar: post.php in app/models/ for database table posts * example: VALID_NOT_EMPTY, 'body' => VALID_NOT_EMPTY ); } ?> ==== Create Controllers for Models ==== * plural: posts_controller.php in app/controllers for model post.php * functions created here are locations the user can visit * example: set('posts', $this->Post->findAll()); } function view($id = null) { $this->Post->id = $id; $this->set('post', $this->Post->read()); } function add() { if(!empty($this->data)) { if($this->Post->save($this->data)) { $this->flash('Your post has been saved.','/posts'); } } } function delete($id) { $this->Post->del($id); $this->flash('The post with id: '.$id.' has been deleted.', '/posts'); } function edit($id = null) { if(empty($this->data)) { $this->Post->id = $id; $this->data = $this->Post->read(); } else { if($this->Post->save($this->data['Post'])) { $this->flash('Your post has been updated.','/posts'); } } } } ?> ==== Create Views ==== * create a folder in app/views as a plural of model: app/views/**posts** * create views for each function in posts_controller.php * files have exact name as function, with a .thtml extension * examples: // add.thtml

Add Post

Title: input('Post/title', array('size' => '40'))?> tagErrorMsg('Post/title', 'Title is requried.')?>

Body: textarea('Post/body', array('rows'=>'10')) ?> tagErrorMsg('Post/body', 'Body is required.') ?>

submit('Save') ?>

// edit.thtml

Edit Post

hidden('Post/id'); ?>

Title: input('Post/title', array('size' => '40'))?> tagErrorMsg('Post/title', 'Title is requried.')?>

Body: textarea('Post/body', array('rows'=>'10')) ?> tagErrorMsg('Post/body', 'Body is required.') ?>

submit('Save') ?>

// index.thtml

Blog posts

link("Add Post", "/posts/add") ?>

Id Title Created
link( 'Delete', "/posts/delete/{$post['Post']['id']}", null, 'Are you sure?' )?> link('Edit', "/posts/edit/".$post['Post']['id']); ?> link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>
// view.thtml

Created:

===== Static Views at the Root Level (Pages Controller) ===== * http://bakery.cakephp.org/articles/view/57 ===== Installation (my custom install) ===== * download and extract the most current release: http://www.cakephp.org * create a directory "cakephp" and place it in your /User/yourusername/Sites directory * move every file and folder except "app" from the extracted archive into the "cakephp" * move "app" to /Users/yourusername/Sites, and rename it to whatever you want your application to be titled (newApp) * modify newApp/.htaccess * after "RewriteEngine on", add a new line: "RewriteBase /~yourusername/newApp/" * modify newApp/webroot/.htaccess * after "RewriteEngine on", add a new line: "RewriteBase /~yourusername/newApp/" * copy newApp/config/database.php.default to database.php * modify database.php * in the default section, set your appropriate database connection parameters * for the initial setup, a tutorial for creating a blog was followed, and a basic table structure SQL statement was given * modify newApp/webroot/index.php * uncomment and modify the line: define('ROOT', DS.'Users'.DS.'yourusername'.DS.'Sites'); * comment out the default definition for ROOT * uncomment and modify the line: define('APP_DIR', 'newApp'); * comment out the default definition for APP_DIR * uncomment and modify the line: define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'yourusername'.DS.'Sites'.DS.'cakephp'); * comment out the default definition for CAKE_CORE_INCLUDE_PATH * verify that newApp/tmp is writable by your web server ==== Routes ==== * make the default index page for the application start at a different location * edit config -> routes.php ... // $Route->connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); $Route->connect('/', array('controller' => 'newlocation', 'action' => 'index')); ... ===== External Links ===== * Home Page - http://www.cakephp.org * Manual - http://manual.cakephp.org * http://thinkingphp.org/cakenews/ * http://cake-php.blogspot.com/