perlmojolicious

mojolicious referencing a stash variable not always defined


I am still learning mojolicious and MVC frameworks in general so this just might be a problem where I am thinking about this wrong so if I am please suggest a better way to do the following.

I have a route /route/:param where param is sometimes defined and sometimes not. I am trying to use "param" in the template for that route but I get an error saying "param" requires explicit package name. I know this is due to :param not matching in the route because when I do call /route/value everything works fine.

Is there a way to be able to use the same template for both when "param" is defined and not defined? I am just trying to pre-populate a form off of what is defined in "param" but not making it required to.

In the template I have

<% if(defined($param)){ %><%= $param %><% } %>

Thanks.


Solution

  • It is always safe to refer to stash("param"), where stash is a helper function defined in Mojolicious::Plugin::DefaultHelpers:

    <%= stash "param" %>
    <%= defined(stash("param")) && stash("param") %>
    etc.