Hi Nathan,
One way to accomplish what you want is to write your own
Template::Provider subclass. You'll need to override at least the
_template_content($path) method and there you can implement the logic
you need, like returning a (pre defined) content if $path does not exist.
my $provider = My::TT::Provider->new();
my $tt = Template->new({
ENCODING => "utf8",
LOAD_TEMPLATES => [ $provider ],
});
$tt->process( ... );
See:
http://www.template-toolkit.org/docs/modules/Template/Provider.html#section_SUBCLASSING
Hope this helps!
Best regards,
Lennart
On 01-05-17 07:58, Nathan Bailey wrote:
Hi all,
More of a Template Toolkit question rather than Dancer per se, but is
there a better way to load a file only if it exists?
From my Googling around, it appears the only approaches are (a)
Try/Catch in TT or (b) include a full <%PERL%> call (which I'm
guessing may be a little heavy to do on every page load).
I'd like to dynamically include a help file if it exists, otherwise
provide a 'No help available for this page' message. Current code
looks like this:
<% help_file = 'help' _ request.request_uri.remove('\?.*') _ '.tt' %>
<% TRY %>
<% USE File('/full_unix_path/views/' _ help_file) %>
<% INCLUDE $help_file %>
<% CATCH File %>
'<% help_file %>' doesn't exist: <% error.info <http://error.info> %>
<% END %>
I'm not keen on the fixed path and it seems overkill to have to
try/catch if the file exists rather than just load it (and fail
silently) or test if it exists and then load.
Do people have better patterns for managing inline help?
thanks,
Nathan
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users