I think stash is the ephemeral one-shot hashref, whereas flash is the
next-request's preloaded stash. That is, you can load up your flash with
whatever you need, and then do a full $c->res->redirect() somewhere -- which
fires off a browser redirect and a new request -- and your then-stash will
have all the goodies you plopped in there.

And, being the stash, it's all wiped out when the request is done. So a
follow-up request (or redirect) would either have an empty stash, or it'd
require the second request-handling routines to stuff things into flash
(again).

So it's not that "flash" is permanent, it's not. It's just a pre-load for
the next-request's short-lived stash.


On Sun, Jan 23, 2011 at 10:58 PM, Eric Berg <[email protected]> wrote:

>  Thanks, Will.  That I figured that would work, but I thought that the
> flash was the right way to do it -- especially with the automatic cleanup,
> so I was holding off on trying that.
>
> Why doesn't flash work across these multiple requests?  I thought that was
> the whole idea of flash vs. stash.
>
> Eric
>
>
> On 1/23/11 11:52 PM, will trillich wrote:
>
> The flash is moved to the stash after the redirect, and then it's gone
> after that, right?
>
>  What we do is stuff the intended destination into the session and then
> pull it from there:
>
>  sub login : Chained('/') PathPart('login') Args(0) {
>     my ( $self, $c ) = @_;
>
>      my $form = Spill::Form::Login->new( action => $c->uri_for('/login')
> );
>
>      $c->stash(
>         template => 'login.tt2',
>         form     => $form,
>     );
>
>      if ( $c->action ne 'login' ) {
>         # Stuff destination into session for later redirect if user
> authenticates
> *        $c->session->{redirect} = $c->req->uri->as_string;*
>     }
>
>  ...then, later, after authenticating...
>
>              my $go = *delete( $c->session->{redirect} )* ||
> $c->req->headers->referer;
>             $go = '/' if $go =~ /\blog(in|out)\b/;
>             $c->res->redirect( $go );
>             $c->detach;
>
>
> On Sun, Jan 23, 2011 at 8:27 PM, Eric Berg <[email protected]> wrote:
>
>> If a user submits a certain form without being logged in, I flash the
>> current URL, save the params in the session, and redirect them to the login.
>>
>> In my Login controller, I look for $c->flash->{redirect_url} and redirect
>> them back to that URL.
>>
>> The problem is that that flash entry is gone after the user submits the
>> login form.  I logged out the redirect URL at the beginning of my login
>> routine and it comes through the first time, but even if I don't access it
>> via the log statement, that redirect_url key is not there in the flash when
>> the user submits the login form with their credentials.
>>
>> I've tried resetting $c->flash->{redirect_url} in the login routine and
>> also tried $c->keep_flash( qw( redirect_url )) in the login routine, but no
>> go.
>>
>> Any thoughts on what I might be doing wrong?
>>
>> Eric
>>
>> _______________________________________________
>> List: [email protected]
>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>> Searchable archive:
>> http://www.mail-archive.com/[email protected]/
>> Dev site: http://dev.catalyst.perl.org/
>>
>
>
>
> --
> The first step towards getting somewhere is to decide that you are not
> going to stay where you are.  -- J.P.Morgan
>
>
> _______________________________________________
> List: [email protected]
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
>
>
>
> _______________________________________________
> List: [email protected]
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
>
>


-- 
The first step towards getting somewhere is to decide that you are not going
to stay where you are.  -- J.P.Morgan
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to