X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FCookbook.pod;h=00e8edae5922a5e5522c56b06710f583ee911aaf;hb=2343e11777834e8785e966f572a3a0a2132c3a89;hp=32951682f14d08dd73c55a5fd0bd17ae92fb146e;hpb=51ef281821755c4e9cfdd3decfa50a7d724eb9f6;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Manual/Cookbook.pod b/lib/Catalyst/Manual/Cookbook.pod index 3295168..00e8eda 100644 --- a/lib/Catalyst/Manual/Cookbook.pod +++ b/lib/Catalyst/Manual/Cookbook.pod @@ -15,13 +15,13 @@ placing a C call in the C action. sub end : Private { my ( $self, $c ) = @_; - die "testing"; + die "forced debug"; } If you're tired of removing and adding this all the time, you can easily add a condition. For example: - die "Testing" if $c->param->{dump_info}; + die "force debug" if $c->req->params->{dump_info}; =head2 Disable statistics @@ -127,6 +127,7 @@ Controller: for my $field ( $c->req->upload ) { + my $upload = $c->req->upload($field); my $filename = $upload->filename; my $target = "/tmp/upload/$filename"; @@ -187,7 +188,7 @@ We'll discuss the first variant for now: To log in a user you might use an action like this: - sub 'login' : Local { + sub login : Local { my ($self, $c) = @_; if ($c->req->params->{username}) { $c->session_login($c->req->params->{username}, @@ -198,6 +199,10 @@ To log in a user you might use an action like this: } } +This action should not go in your MyApp class...if it does, it will +conflict with the built-in method of the same name. Instead, put it +in a Controller class. + $c->req->params->{username} and $c->req->params->{password} are html form parameters from a login form. If login succeeds, then $c->req->{user} contains the username of the authenticated user. @@ -276,6 +281,21 @@ to be. And this is all you need to do. +=head2 Pass-through login (and other actions) + +An easy way of having assorted actions that occur during the processing of +a request that are orthogonal to its actual purpose - logins, silent +commands etc. Provide actions for these, but when they're required for +something else fill e.g. a form variable __login and have a sub begin like so: + +sub begin : Private { + my ($self, $c) = @_; + foreach my $action (qw/login docommand foo bar whatever/) { + if ($c->req->params->{"__${action}"}) { + $c->forward($action); + } + } +} =head2 How to use Catalyst without mod_perl @@ -339,6 +359,14 @@ authentication, authorization, and access check phases. For more information see the FastCGI documentation, the C module and L. +=head1 Forwarding with a parameter + +Sometimes you want to pass along an argument when forward to another +action. This can easily be accomplished like this: + + $c->req->args([qw/arg1 arg2 arg3/]); + $c->forward('/wherever'); + =head1 AUTHOR Sebastian Riedel, C