Difference between revisions of "6CC001 Workshop - week 04"

From mi-linux
Jump to navigationJump to search
m (Protected "6CC001 Workshop - week 04" [edit=sysop:move=sysop])
 
(2 intermediate revisions by the same user not shown)
Line 15: Line 15:
  
 
Let's take it one step at a time... and remember: read and understand the code before pasting it into your text editor!
 
Let's take it one step at a time... and remember: read and understand the code before pasting it into your text editor!
 
 
 
 
 
== Step 6 - Adding messages ==
 
 
Next, let’s add a command to add blog messages. You might have noticed above that our “add messages” link (see above) points to “index.php?cmd=BlogAddForm”
 
 
So first, you need a new command called “Command_BlogAddForm”. It doesn’t do much, it simply displays the view containing the form. Here is the code:
 
 
<pre>
 
// Command_BlogAddForm.php
 
 
//############################################################################
 
// SearchVenueCommand class
 
//############################################################################
 
class Command_BlogAddForm extends Command
 
{
 
  //############################################################################
 
  // doExecute
 
  //############################################################################
 
  function doExecute(Request $request)
 
  {
 
    // Include view
 
    include("views/add_form.php");
 
  }
 
}
 
</pre>
 
 
And here is the view containing the form:
 
 
<pre>
 
<!-- views/add_form.php -->
 
 
<?require_once("view_helper.php");?>
 
 
<?ViewHelper::DisplayHeader("Add message");?>
 
 
<h1>Blog add form</h1>
 
 
<p>Please fill in the fields</p>
 
 
<form action="index.php?cmd=BlogAdd" method="post">
 
  Title:<br><input name="title">
 
  <br>
 
  Message:<br><textarea name="message"></textarea>
 
  <br>
 
  <input type="submit" value="Add">
 
</form>
 
   
 
<?ViewHelper::DisplayFooter();?>
 
</pre>
 
 
Again note that the "action" attribute of the <FORM> above points to "index.php?cmd=BlogAdd". So we need another action responsible for reading the user data from the form, and creating a new record in the database... here it is!
 
 
<pre>
 
// Command_BlogAdd.php
 
 
//############################################################################
 
// Command_BlogAdd class
 
//############################################################################
 
class Command_BlogAdd extends Command
 
{
 
  //############################################################################
 
  // doExecute
 
  //############################################################################
 
  function doExecute(Request $request)
 
  {
 
    // Get data from request
 
    $title = $request->getProperty('title');
 
    $message = $request->getProperty('message');
 
   
 
    // Create manager object
 
    $manager = new ManagerMessage();   
 
   
 
    // Add to database
 
    $manager->addMessage($title, $message);
 
   
 
    // Redirect to index
 
    header("location:index.php");
 
  }
 
}
 
</pre>
 
 
Note: This action doesn't have a view. It simply redirects the user to the index of the forum.
 
 
=== Checkpoint ===
 
 
You should now be able to add new messages... try it!
 
 
== Step 7 - Deleting messages ==
 
 
Finally, let’s create a new action in charge of message deletion.
 
 
Again if you browse the mouse over the “delete this message” links, you will see URLs such as “index.php?cmd=BlogDelete&id=19”
 
 
So we need a new Command_BlogDelete class. Here is the code:
 
 
<pre>
 
// Command_BlogDelete.php
 
 
//############################################################################
 
// SearchVenueCommand class
 
//############################################################################
 
class Command_BlogDelete extends Command
 
{
 
  //############################################################################
 
  // doExecute
 
  //############################################################################
 
  function doExecute(Request $request)
 
  {
 
    // Get data from request
 
    $id = $request->getProperty('id');
 
   
 
    // Create manager object
 
    $manager = new ManagerMessage();   
 
   
 
    // Add to database
 
    $manager->deleteMessage($id);
 
   
 
    // Redirect to index
 
    header("location:index.php");
 
  }
 
}
 
</pre>
 
 
Nothing too complicated here...
 
 
=== Checkpoint ===
 
 
You should now be able to delete messages.
 
 
Note: It is always better practice to ask users to confirm deletion first... but you can do that bit&nbsp;;)
 

Latest revision as of 14:57, 22 September 2011

Main Page >> Advanced Web Technologies >> Workbook >> Week 04

Your job today is to implement a blog similar to this one:

The different steps are:

  1. Step 1 - Create and populate database
  2. Step 2 - Create the index.php file, front controller and registry class
  3. Step 3 - Handling user request and creating appropriate command
  4. Step 4 - Accessing the database
  5. Step 5 - Creating our first view
  6. Step 6 - Adding messages
  7. Step 7 - Deleting messages

Let's take it one step at a time... and remember: read and understand the code before pasting it into your text editor!