X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F04_BasicCRUD.pod;h=eabac9c303f8124f5aae68d663c74416e5ce54ac;hb=8c848468312d44a8c59e9bac268b6fdcc6150957;hp=39d3413d25f941ca3c0fe6d3aa6e3b23f5d81f49;hpb=0ed3df53a9644cf30fe2a79828fd2e15044dbcd6;p=catagits%2FCatalyst-Manual.git diff --git a/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod b/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod index 39d3413..eabac9c 100644 --- a/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod +++ b/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod @@ -377,7 +377,7 @@ to something along the lines of the following: | /books/url_create/*/*/* | /books/url_create | '-------------------------------------+--------------------------------------' -C has disappeared form the "Loaded Path actions" section +C has disappeared from the "Loaded Path actions" section but it now shows up under the newly created "Loaded Chained actions" section. And the "/*/*/*" portion clearly shows our requirement for three arguments. @@ -761,7 +761,7 @@ equivalent. =head2 Try the Delete Feature -One you save the Books controller, the server should automatically restart. +Once you save the Books controller, the server should automatically restart. The C method should now appear in the "Loaded Chained actions" section of the startup debug output: @@ -886,7 +886,7 @@ query parameter: ...
[%# Status and error messages %] - [% status_msg || c.request.params.status_msg %] + [% status_msg || c.request.params.status_msg | html %] [% error_msg %] [%# This is where TT will stick all of your template's contents. -%] [% content %] @@ -904,7 +904,10 @@ Cspan class="message"E> line. Point your browser to L (you should now be able to safely hit "refresh" in your browser). Then delete the remaining copy of "TCPIP_Illustrated_Vol-2". The green "Book deleted" -status message should return. +status message should return. But notice that you can now hit the +"Reload" button in your browser and it just redisplays the book +list (and it correctly shows it without the "Book deleted" message +on redisplay). B Another popular method for maintaining server-side information across a redirect is to use the C technique we @@ -935,8 +938,8 @@ Let's add two columns to our existing C table to track when each book was added and when each book is updated: $ sqlite3 myapp.db - sqlite> ALTER TABLE book ADD created INTEGER; - sqlite> ALTER TABLE book ADD updated INTEGER; + sqlite> ALTER TABLE book ADD created TIMESTAMP; + sqlite> ALTER TABLE book ADD updated TIMESTAMP; sqlite> UPDATE book SET created = DATETIME('NOW'), updated = DATETIME('NOW'); sqlite> SELECT * FROM book; 1|CCSP SNRS Exam Certification Guide|5|2010-02-16 04:15:45|2010-02-16 04:15:45 @@ -987,9 +990,9 @@ B the C<1;> on the last line): # __PACKAGE__->add_columns( "created", - { data_type => 'datetime', set_on_create => 1 }, + { data_type => 'timestamp', set_on_create => 1 }, "updated", - { data_type => 'datetime', set_on_create => 1, set_on_update => 1 }, + { data_type => 'timestamp', set_on_create => 1, set_on_update => 1 }, ); This will override the definition for these fields that Schema::Loader @@ -1015,6 +1018,7 @@ time entered for it (see the last line in the listing below): 5|Designing with Web Standards|5|2010-02-16 04:15:45|2010-02-16 04:15:45 9|TCP/IP Illustrated, Vol 3|5|2010-02-16 04:15:45|2010-02-16 04:15:45 10|TCPIP_Illustrated_Vol-2|5|2010-02-16 04:18:42|2010-02-16 04:18:42 + sqlite> .q Notice in the debug log that the SQL DBIC generated has changed to incorporate the datetime logic: @@ -1098,7 +1102,7 @@ fifteen minutes: http://localhost:3000/books/list_recent/15 Depending on how recently you added books, you might want to -try a higher or lower value. +try a higher or lower value for the minutes. =head2 Chaining ResultSets @@ -1228,7 +1232,7 @@ C and add the following method (as always, it must be above the closing "C<1;>"): # - # Helper methods + # Row-level helper methods # sub full_name { my ($self) = @_; @@ -1264,7 +1268,7 @@ And, because the concatenation logic was encapsulated inside our Result Class, it keeps the code inside our TT template nice and clean (remember, we want the templates to be as close to pure HTML markup as possible). Obviously, this capability becomes even more useful as you -use to to remove even more complicated row-specific logic from your +use it to remove even more complicated row-specific logic from your templates! @@ -1357,7 +1361,7 @@ huge comments to clue people in to the gist of our code. The view code is now self-documenting and readable enough that you could probably get by with no comments at all. All of the "complex" work is being done in our Result Class methods (and, because we have broken the code into -nice, modular chucks, the Result Class code is hardly something you +nice, modular chunks, the Result Class code is hardly something you would call complex). As we saw in this section, always strive to keep your view AND @@ -1380,5 +1384,6 @@ Please report any errors, issues or suggestions to the author. The most recent version of the Catalyst Tutorial can be found at L. -Copyright 2006-2008, Kennedy Clark, under Creative Commons License +Copyright 2006-2010, Kennedy Clark, under the +Creative Commons Attribution Share-Alike License Version 3.0 (L).