Add clarification about need for "| html"
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / 04_BasicCRUD.pod
index fc938df..f19da1e 100644 (file)
@@ -60,12 +60,13 @@ This chapter of the tutorial builds on the fairly primitive application
 created in
 L<Chapter 3|Catalyst::Manual::Tutorial::03_MoreCatalystBasics> to add
 basic support for Create, Read, Update, and Delete (CRUD) of C<Book>
-objects.  Note that the 'list' function in Chapter 3 already implements
-the Read portion of CRUD (although Read normally refers to reading a
-single object; you could implement full Read functionality using the
-techniques introduced below).  This section will focus on the Create and
-Delete aspects of CRUD.  More advanced capabilities, including full
-Update functionality, will be addressed in
+objects.  Note that the 'list' function in
+L<Chapter 3|Catalyst::Manual::Tutorial::03_MoreCatalystBasics> already
+implements the Read portion of CRUD (although Read normally refers to
+reading a single object; you could implement full Read functionality
+using the techniques introduced below).  This section will focus on the
+Create and Delete aspects of CRUD.  More advanced capabilities,
+including full Update functionality, will be addressed in
 L<Chapter 9|Catalyst::Manual::Tutorial::09_AdvancedCRUD>.
 
 Although this chapter of the tutorial will show you how to build CRUD
@@ -594,14 +595,14 @@ Edit C<root/src/books/list.tt2> and update it to match the following
 header, and 2) the five lines for the Delete link near the bottom):
 
     [% # This is a TT comment. -%]
-
+    
     [%- # Provide a title -%]
     [% META title = 'Book List' -%]
-
+    
     [% # Note That the '-' at the beginning or end of TT code  -%]
     [% # "chomps" the whitespace/newline at that end of the    -%]
     [% # output (use View Source in browser to see the effect) -%]
-
+    
     [% # Some basic HTML with a loop to display books -%]
     <table>
     <tr><th>Title</th><th>Rating</th><th>Author(s)</th><th>Links</th></tr>
@@ -786,8 +787,6 @@ cascading delete operation via the DBIC_TRACE output:
 
     SELECT me.id, me.title, me.rating FROM book me WHERE ( ( me.id = ? ) ): '6'
     DELETE FROM book WHERE ( id = ? ): '6'
-    SELECT me.book_id, me.author_id FROM book_author me WHERE ( me.book_id = ? ): '6'
-    DELETE FROM book_author WHERE ( author_id = ? AND book_id = ? ): '4', '6'
 
 
 =head2 Fixing a Dangerous URL
@@ -896,7 +895,10 @@ query parameter:
 Although the sample above only shows the C<content> div, leave the rest
 of the file intact -- the only change we made to the C<wrapper.tt2> was
 to add "C<|| c.request.params.status_msg>" to the
-C<E<lt>span class="message"E<gt>> line.
+C<E<lt>span class="message"E<gt>> line.  Note that we definitely want
+the "C<| html>" TT filter here since it would be easy for users to
+modify the message on the URL and possibly inject harmful code into the
+application if we left that off.
 
 
 =head2 Try the Delete and Redirect With Query Param Logic
@@ -942,6 +944,15 @@ book was added and when each book is updated:
     sqlite> .quit
     $
 
+Here are the commands without the surrounding sqlite3 prompt and output
+in case you want to cut and paste them as a single block (but still
+start sqlite3 before you paste these in):
+
+    ALTER TABLE book ADD created TIMESTAMP;
+    ALTER TABLE book ADD updated TIMESTAMP;
+    UPDATE book SET created = DATETIME('NOW'), updated = DATETIME('NOW');
+    SELECT * FROM book;
+
 This will modify the C<books> table to include the two new fields and
 populate those fields with the current time.
 
@@ -970,11 +981,11 @@ call to C<add_columns()>. However, also notice that the C<many_to_many>
 relationships we manually added below the "C<# DO NOT MODIFY...>" line
 were automatically preserved.
 
-While we have this file open, let's update it with some additional
-information to have DBIC automatically handle the updating of these two
-fields for us.  Insert the following code at the bottom of the file (it
-B<must> be B<below> the "C<# DO NOT MODIFY...>" line and B<above> the
-C<1;> on the last line):
+While we C<lib/MyApp/Schema/Result/Book.pm> open, let's update it with
+some additional information to have DBIC automatically handle the
+updating of these two fields for us.  Insert the following code at the
+bottom of the file (it B<must> be B<below> the "C<# DO NOT MODIFY...>"
+line and B<above> the C<1;> on the last line):
 
     #
     # Enable automatic date handling