http://www.perlmonks.org?node_id=1219900

navalned has asked for the wisdom of the Perl Monks concerning the following question:

I keep getting the following error:

Error executing run mode 'mode2': HTML::Template->output() : fatal error in loop output : HTML::Template : Attempt to set nonexistent parameter 'icon' - this parameter name doesn't match any declarations in the template file : (die_on_bad_params => 1) at /usr/local/libdata/perl5/site_perl/HTML/Template.pm line 3068.

I have tried lots of stuff. However, this seems like what should work:

sub some_run_mode { my $template = $self->load_tmpl('some_template'); my $menu = $self->menu(); $menu->add('mode3', 'logout'); $template->param( MAIN_MENU_LOOP => $menu->loop(); ); return $template->output(); }


And from the template:

<TMPL_LOOP MAIN_MENU_LOOP> <li><a href="<TMPL_VAR URL>"><TMPL_VAR LABEL></a></li> </TMPL_LOOP>

I'm going to keep trying, but if you have overcome this before please share.

Thanks!

Replies are listed 'Best First'.
Re: CGI::Application::Plugin::Menu icon issues
by kcott (Archbishop) on Aug 06, 2018 at 05:36 UTC

    G'day navalned,

    Welcome to the Monastery.

    Without seeing more of your code, this is purely a guess.

    The variable $self just appears in &some_run_mode. Where does it come from? What's its state when it's used there? Did you perhaps need something like this?

    sub some_run_mode { my ($self) = @_; ... }

    You might also look elsewhere in your code to see where "icon" appears.

    — Ken

Re: CGI::Application::Plugin::Menu icon issues
by navalned (Beadle) on Aug 05, 2018 at 21:39 UTC

    This is an ugly hack, but this works for now:

    <TMPL_LOOP MAIN_MENU_LOOP> <li><a href="<TMPL_VAR URL>"><TMPL_VAR LABEL></a></li> <!-- <TMPL_VAR ICON> --!> </TMPL_LOOP>