Altho the implications here<div><a href="http://search.cpan.org/~bobtfish/Catalyst-Plugin-Session-0.31/lib/Catalyst/Plugin/Session.pm#METHODS">http://search.cpan.org/~bobtfish/Catalyst-Plugin-Session-0.31/lib/Catalyst/Plugin/Session.pm#METHODS</a></div>
<div>are that you can do multiple redirects with one $c->flash -- to wit:</div><br>"""<br>The flash data will be cleaned up only on requests on which actually use $c->flash (thus allowing multiple redirections), and the policy is to delete all the keys which haven't changed since the flash data was loaded at the end of every request.<br>
"""<br><div><br></div><div>We just treat it as a preloaded stash, and that seems to work fine for us. If we want a more permanent chunk of data, we inject it into $c->session.</div><div><br></div><div><br>
</div><div><br><div class="gmail_quote">On Sun, Jan 23, 2011 at 11:36 PM, will trillich <span dir="ltr"><<a href="mailto:will.trillich@serensoft.com">will.trillich@serensoft.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
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.<div>
<br></div><div>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).</div>
<div><br></div><div>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.</div><div><div></div><div class="h5"><div><br><br><div class="gmail_quote">
On Sun, Jan 23, 2011 at 10:58 PM, Eric Berg <span dir="ltr"><<a href="mailto:eberg@bergbrains.com" target="_blank">eberg@bergbrains.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#ffffff" text="#000000">
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.<br>
<br>
Why doesn't flash work across these multiple requests? I thought
that was the whole idea of flash vs. stash.<br><font color="#888888">
<br>
Eric</font><div><div></div><div><br>
<br>
On 1/23/11 11:52 PM, will trillich wrote:
<blockquote type="cite">
<div>The flash is moved to the stash after the redirect, and then
it's gone after that, right?</div>
<div><br>
</div>
What we do is stuff the intended destination into the session and
then pull it from there:
<div><br>
</div>
<div>
<div>sub login : Chained('/') PathPart('login') Args(0) {</div>
<div> my ( $self, $c ) = @_;</div>
<div><br>
</div>
<div> my $form = Spill::Form::Login->new( action =>
$c->uri_for('/login') );</div>
<div><br>
</div>
<div> $c->stash(</div>
<div> template => 'login.tt2',</div>
<div> form => $form,</div>
<div> );</div>
<div><br>
</div>
<div> if ( $c->action ne 'login' ) {</div>
<div> # Stuff destination into session for later redirect
if user authenticates</div>
<div><b> $c->session->{redirect} =
$c->req->uri->as_string;</b></div>
<div> }</div>
<div><br>
</div>
<div>...then, later, after authenticating...</div>
<div><br>
</div>
<div>
<div> my $go = <b>delete(
$c->session->{redirect} )</b> ||
$c->req->headers->referer;</div>
<div> $go = '/' if $go =~ /\blog(in|out)\b/;</div>
<div> $c->res->redirect( $go );</div>
<div> $c->detach;</div>
</div>
<div><br>
</div>
<br>
<div class="gmail_quote">On Sun, Jan 23, 2011 at 8:27 PM, Eric
Berg <span dir="ltr"><<a href="mailto:eberg@bergbrains.com" target="_blank">eberg@bergbrains.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">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.<br>
<br>
In my Login controller, I look for
$c->flash->{redirect_url} and redirect them back to
that URL.<br>
<br>
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.<br>
<br>
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.<br>
<br>
Any thoughts on what I might be doing wrong?<br>
<br>
Eric<br>
<br>
_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk" target="_blank">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
The first step towards getting somewhere is to decide that you
are not going to stay where you are. -- J.P.Morgan<br>
</div>
<pre><fieldset></fieldset>
_______________________________________________
List: <a href="mailto:Catalyst@lists.scsys.co.uk" target="_blank">Catalyst@lists.scsys.co.uk</a>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a>
</pre>
</blockquote>
<br>
</div></div></div>
<br>_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk" target="_blank">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>The first step towards getting somewhere is to decide that you are not going to stay where you are. -- J.P.Morgan<br>
</div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>The first step towards getting somewhere is to decide that you are not going to stay where you are. -- J.P.Morgan<br>
</div>