[Catalyst] access stash outside methods

John Napiorkowski jjn1056 at yahoo.com
Wed Aug 22 00:12:51 GMT 2007


--- Aditya Verma <verma.aditya1 at gmail.com> wrote:

> Hi All,
> 
> I want all of my controllers to register there
> respective URLs with
> description. this data will be used in template to
> create dynamic HTML
> pages.
> controllers will register URLs at catalyst startup.
> 
> I have to store this data into variable (not in any
> file or database) which
> will be accessible in all the controllers.
> To get the registration work I have to write
> statement outside of all
> controller methods to execute the same at the time
> of catalyst startup.
> 
> hope you guys can understand my requirement.
> 
> Thanks,
> Aditya

Aditya,

Since your actions can map URL's in different ways, it
may not be easy to dynamically create a sitemap object
in the way you are talking about.  Because if an
action accepts parameters than it can potentially map
to a large number of URLs.

If you just want to have some additional information
placed into the stash for all the actions in a given
controller, you can do that in a :begin action, which
is run for each request to a controller.

However if this information is presentation related
you might prefer to place it into a configuration file
for your view templates.  For example if you are using
Template Toolkit, you can include a template that just
defines some local information.  That way you can
modify the information without having to deal with the
controllers.

Not sure if I am helping.  Good luck!
John


> 
> On 8/21/07, John Napiorkowski <jjn1056 at yahoo.com>
> wrote:
> >
> >
> > --- Aditya Verma <verma.aditya1 at gmail.com> wrote:
> >
> > > Hi,
> > >
> > > I am running catalyst under apache configured
> with
> > > mod_perl.
> > >
> > > Can I somehow access stash out methods.
> > >
> > > I want to declare a global variable inside
> > > controller and outside methods
> > > which will be accessible in all controllers.
> > > stash could be a solution but outside methods
> > > context object is not
> > > available so i don't have access to stash.
> > >
> > > please help me solve the problem.
> > >
> > > Thanks,
> > > Aditya
> >
> > Hi,
> >
> > I may not fully understand your use case, but
> > typically the stash is used for a particular
> context,
> > not as a global thing.
> >
> > You can alway pass the context to methods that
> need
> > it.  I know it seems cumbersome, but the reason is
> to
> > make you really think if you need it, the idea
> being
> > that you should try to decouple your context as
> much
> > as possible.
> >
> > If you need some global information there are a
> few
> > ways I can think of:
> >
> > 1) put it into the configuration file.  This is
> great
> > for static stuff, like admin email address, etc.
> > 2) Create a model that provides the information
> you
> > need.  If this information is based on the current
> > context you can inherit from
> > "Catalyst::Component::ACCEPT_CONTEXT" to build it.
> > 3) Create a base controller with a method that
> gets
> > the information you need.  The have the
> controllers
> > that need this information inherit from that.
> >
> > You might get the suggestion to make this a
> catalyst
> > plugin, but that's no longer recommended best
> > practices.  Plugins should be reserved for when
> you
> > are trulying enhancing/extending the basic
> Catalyst
> > features.
> >
> > Please share with us the details of the use case
> and
> > maybe we can help.
> >
> > --John
> >
> >
> >
> >
> >
>
____________________________________________________________________________________
> > Choose the right car based on your needs.  Check
> out Yahoo! Autos new Car
> > Finder tool.
> > http://autos.yahoo.com/carfinder/
> >
> > _______________________________________________
> > List: Catalyst at lists.rawmode.org
> > Listinfo:
> http://lists.rawmode.org/mailman/listinfo/catalyst
> > Searchable archive:
> >
>
http://www.mail-archive.com/catalyst@lists.rawmode.org/
> > Dev site: http://dev.catalyst.perl.org/
> >
> > _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo:
> http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive:
>
http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
> 



       
____________________________________________________________________________________
Be a better Heartthrob. Get better relationship answers from someone who knows. Yahoo! Answers - Check it out. 
http://answers.yahoo.com/dir/?link=list&sid=396545433



More information about the Catalyst mailing list