NAME
Catalyst::Middleware::Stash - The Catalyst stash - in middleware
DESCRIPTION
We've moved the Catalyst stash to middleware. Please don't use this directly since it is likely to move off the Catalyst namespace into a stand alone distribution
We store a coderef under the PSGI_KEY
which can be dereferenced with key values or nothing to access the underlying hashref.
The stash middleware is designed so that you can 'nest' applications that use it. If for example you have a Catalyst application that is called by a controller under a parent Catalyst application, the child application will inherit the full stash of the parent BUT any new keys added by the child will NOT bubble back up to the parent. However, children of children will.
For more information the current test case t/middleware-stash.t is the best documentation.
SUBROUTINES
This class defines the following subroutines.
PSGI_KEY
Returns the hash key where we store the stash. You should not assume the string value here will never change! Also, its better to use "get_stash" or "stash".
get_stash
Expect: $psgi_env.
Exportable subroutine.
Get the stash out of the $env
.
stash
Expects: An object that does env
and arguments
Exportable subroutine.
Given an object with a method env
get or set stash values, either as a method or via hashref modification. This stash is automatically reset for each request (it is not persistent or shared across connected clients. Stash key / value are stored in memory.
use Plack::Request;
use Catalyst::Middleware::Stash 'stash';
my $app = sub {
my $env = shift;
my $req = Plack::Request->new($env);
my $stashed = $req->stash->{in_the_stash}; # Assume the stash was previously populated.
return [200, ['Content-Type' => 'text/plain'],
["I found $stashed in the stash!"]];
};
If the stash does not yet exist, an exception is thrown.
METHODS
This class defines the following methods.
call
Used by plack to call the middleware