Difference between revisions of "6CC001 Workshop - week 04"
Line 19: | Line 19: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Step 6 - Adding messages == | == Step 6 - Adding messages == |
Revision as of 16:45, 12 July 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:
- Step 1 - Create and populate database
- Step 2 - Create the index.php file, front controller and registry class
- Step 3 - Handling user request and creating appropriate command
- Step 4 - Accessing the database
- Step 5 - Creating our first view
- Step 6 - Adding messages
- 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!
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:
// Command_BlogAddForm.php //############################################################################ // SearchVenueCommand class //############################################################################ class Command_BlogAddForm extends Command { //############################################################################ // doExecute //############################################################################ function doExecute(Request $request) { // Include view include("views/add_form.php"); } }
And here is the view containing the form:
<!-- 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();?>
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!
// 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"); } }
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:
// 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"); } }
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 ;)