How to Build a CMS in CakePHP

Written by ankur taxali
  • Share
  • Tweet
  • Share
  • Pin
  • Email
How to Build a CMS in CakePHP
A content management system can help your business's website by making it easier to upload and delete content. (Jupiterimages/Photos.com/Getty Images)

For those looking to advance their programming skills, building a content management system is a great exercise to try out. You can build a CMS using the PHP framework called CakePHP. A content management system is nothing more than a piece of software that manages the material on a website. After you've built a CMS, a website's content can be added or removed with ease and without any further programming required.

Skill level:
Easy

Other People Are Reading

Things you need

  • CakePHP
  • Server with access to a database
  • Permission to modify your database

Show MoreHide

Instructions

  1. 1

    Create a database called "Blog" by using PHPMyAdmin or SQL. Add a table called "Posts" to your database. Use the code below to create your table.

    CREATE TABLE IF NOT EXISTS 'posts' (

    'id' int(11) NOT NULL auto_increment,

    'title' varchar(50) default NULL,

    'content' text,

    'created' datetime default NULL,

    'modified' datetime default NULL,

    PRIMARY KEY ('id')

    );

    Before moving forward, populate your table with example posts, like the ones given below.

    Id: 1

    Title: How to chop the perfect onion

    Content: Here is how to chop the perfect onion...

    Created: 2010-07-01 12:00:00

    Modified: 2010-07-01 13:22:14

    Id: 2

    Title: How to tie your shoes

    Content: What everyone should know how to do...

    Created: 2010-07-02 07:14:20

    Modified: 2010-07-02 10:22:34

    Id: 3

    Title: How to buy gum

    Content: Know what brands are the very best...

    Created: 2010-07-03 5:10:33

    Modified: 2010-07-03 6:30:14

  2. 2

    Go to the /models folder and create a new file called post.php. The /models folder is located in your /app directory. (CakePHP knows that post.php contains a model for the posts table.) Copy and paste the code below into the blank post.php.

    <?php

    class Post extends AppModel {

    var $name = 'Post';

    }

    ?>

  3. 3

    Create a posts controller in the directory /controllers in your Cake installation. Start a new file. Call the file posts_controller.php. Open up the blank file, and paste in the following code.

    <?php

    class PostsController extends AppController {

    var $name = 'Posts';

    function index() {

    $posts = $this->Post->find('all');

    $this->set(compact('posts'));

    }

    }

    ?>

    A controller performs actions on all of the posts, so it uses the plural form ("posts"). The function index() finds all of the posts, and creates an array called $posts to use in templates.

  4. 4

    Create the corresponding index view. Views live in the /views folder, and views for the "Post" model live in views/posts/. Create a new file called index.ctp and paste the code below.

    <?php

    <!DOCTYPE html>

    <html>

    <head>

    <title>My Blog</title>

    </head>

    <body>

    <h1>All Posts</h1>

    <table>

    <tr>

    <th>ID</th>

    <th>Title</th>

    <th>Content</th>

    <th>Last Modified</th>

    <th>Actions</th>

    </tr>

    <?php foreach ($posts as $post) : ?>

    <tr>

    <td><?php echo $post['Post']['id']; ?></td>

    <td><?php echo $post['Post']['title']; ?></td>

    <td><?php echo $post['Post']['content']; ?></td>

    <td><?php echo $post['Post']['modified']; ?></td>

    <td><?php echo $html->link('Edit', array('action'=>'edit', $post['Post']['id']); ?>

    |

    <?php echo $html->link('Delete', array('action'=>'delete', $post['Post']['id']); ?>

    </td>

    </tr>

    <?php endforeach; ?>

    </table>

    </body>

    </html>

    ?>

    The foreach loop iterates through each array element, and does an echo. Before the loop closes, there are two $html->link objects. They provide an easy way to make HTML links.

  5. 5

    Go back to posts_controller.php. Open a new function brace for the add() method definition, and write down the following source code:

    $action Heading = "Add a Post!";

    $this->set(compact('actionHeading'));

    if(!empty($this->data)) {

    $this->Post->create();

    if ($this->Post->save($this->data)) {

    $this->Session->set Flash(_('The Post has been saved', true));

    $this->redirect(array('action'=>'index'));

    } else {

    $this->Session->set Flash(_('This post could not be saved.', true));

    }

    }

  6. 6

    Go to /views/posts and create a new file called add.ctp. ("ctp" stands for Cake template file.) Add the following code to the blank file.

    <h1>Add a post</h1>

    <?php

    echo $form->create('Post', array('action'=>'add'));

    echo $form->input('title');

    echo $form->input('content');

    echo $form->end('Add a post');

    ?>

  7. 7

    Complete the edit() action. The entire function definition is listed below. Copy and paste it in your file.

    function edit($id = NULL)

    if (empty($this->data)) {

    $this->data = $this->Post->read(NULL, $id);

    } else {

    if($this->Post->save($this->data)){

    $this->Session->setFlash('Post updated.');

    $this->redirect(array('action'=>'view', $id));

    }

    }

  8. 8

    Go to the views folder. Create a new view file called "edit.ctp". Paste the following code in the blank file.

    <h2>Edit Post</h2>

    <?php

    echo $form->create('Post', array('action'=>'edit'));

    echo $form->input('title');

    echo $form->input('content');

    echo $form->input('id', array('type'=>'hidden'));

    echo $form->end('Edit Post');

    ?>

  9. 9

    Copy and paste the delete method below in posts_controller.php.

    function delete($id = NULL) {

    $this->Post->delete($id);

    $this->Session->setFlash('Post was deleted!');

    $this->redirect(array('action'=>'index'));

    }

Tips and warnings

  • Make sure you are comfortable with Models, Views and Controllers, and know what they do, before going further.

Don't Miss

Filter:
  • All types
  • Articles
  • Slideshows
  • Videos
Sort:
  • Most relevant
  • Most popular
  • Most recent

No articles available

No slideshows available

No videos available

By using the eHow.co.uk site, you consent to the use of cookies. For more information, please see our Cookie policy.