- Added a bunch of comments to new dispatcher code
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Cookbook.pod
index 2c1b139..ff80c19 100644 (file)
@@ -40,51 +40,21 @@ statistics in your debug messages.
 =head2 Scaffolding
 
 Scaffolding is very simple with Catalyst.
-Just use Catalyst::Model::CDBI::CRUD as your base class.
 
-    # lib/MyApp/Model/CDBI.pm
-    package MyApp::Model::CDBI;
+The recommended way is to use Catalyst::Helper::Controller::Scaffold.
 
-    use strict;
-    use base 'Catalyst::Model::CDBI::CRUD';
-
-    __PACKAGE__->config(
-        dsn           => 'dbi:SQLite:/tmp/myapp.db',
-        relationships => 1
-    );
-
-    1;
-
-    # lib/MyApp.pm
-    package MyApp;
+Just install this module, and to scaffold a Class::DBI Model class, do the following:
 
-    use Catalyst 'FormValidator';
+./script/myapp_create controller <name> Scaffold <CDBI::Class>Scaffolding
 
-    __PACKAGE__->config(
-        name => 'My Application',
-        root => '/home/joeuser/myapp/root'
-    );
-
-    sub my_table : Global {
-        my ( $self, $c ) = @_;
-        $c->form( optional => [ MyApp::Model::CDBI::Table->columns ] );
-        $c->forward('MyApp::Model::CDBI::Table');
-    }
-
-    1;
 
-Modify the C<$c-E<gt>form()> parameters to match your needs, and don't
-forget to copy the templates into the template root. Can't find the
-templates?  They were in the CRUD model distribution, so you can do
-B<look Catalyst::Model::CDBI::CRUD> from the CPAN shell to find them.
 
-Other Scaffolding modules are in development at the time of writing.
 
 =head2 File uploads
 
 =head3 Single file upload with Catalyst
 
-To implement uploads in Catalyst you need to have a HTML form similiar to
+To implement uploads in Catalyst, you need to have a HTML form similar to
 this:
 
     <form action="/upload" method="post" enctype="multipart/form-data">
@@ -285,13 +255,13 @@ best to add a user check to a 'begin' action:
         }
     }
 
-Pay attention to $c->req->action(undef). This is needed because of the 
-way $c->forward works - C<forward> to C<login> gets called, but after that 
-Catalyst will still execute the action defined in the URI (e.g. if you 
-tried to go to C</add>, then first 'begin' will forward to 'login', but after
-that 'add' will nonetheless be executed). So $c->req->action(undef) undefines any 
-actions that were to be called and forwards the user where we want him/her 
-to be.
+Pay attention to $c->req->action(undef). This is needed because of the
+way $c->forward works - C<forward> to C<login> gets called, but after
+that Catalyst will still execute the action defined in the URI (e.g. if
+you tried to go to C</add>, then first 'begin' will forward to 'login',
+but after that 'add' will nonetheless be executed). So
+$c->req->action(undef) undefines any actions that were to be called and
+forwards the user where we want him/her to be.
 
 And this is all you need to do. 
 
@@ -463,7 +433,7 @@ favicon.ico by using this in your HTML header:
 
 The Static plugin makes use of the C<shared-mime-info> package to
 automatically determine MIME types. This package is notoriously
-difficult to install, especially on win32 and OSX. For OSX the easiest
+difficult to install, especially on win32 and OS X. For OS X the easiest
 path might be to install Fink, then use C<apt-get install
 shared-mime-info>. Restart the server, and everything should be fine.
 
@@ -616,7 +586,7 @@ mode, the error page is a useful screen including the error message and
 a full Data::Dumper output of the C<$c> context object. When not in
 C<-Debug>, users see a simple "Please come back later" screen.
 
-To use a custom error page, use a special C<end> method to short-circut
+To use a custom error page, use a special C<end> method to short-circuit
 the error processing. The following is an example; you might want to
 adjust it further depending on the needs of your application (for
 example, any calls to C<fillform> will probably need to go into this