[Catalyst] A View that may include elements optionally returnedfrom other funcs

Carl Johnstone catalyst at fadetoblack.me.uk
Wed Apr 25 11:58:02 GMT 2007


> Ugh...   Assume that the view gets everything from controller.  Then this 
> controller is the thing that should gather everything together before 
> shipping it to the view.  Let the template decide the form, let the 
> controller decide the content.

That's fair enough, but say you've got 20 possible page elements of which 
typically 5 or 6 are included in the final page. Would you still suggest 
that the Controller should initialize any data for all 20 elements onto the 
stash?

What if some of those elements are relatively expensive to generate?

What Steve wants is some way of being able to decide in the View which of 
those elements are included and load them accordingly.

The best solution I can come up with is passing coderefs into your view 
which can then be run to retrieve the data would something like this work?

$c->stash->{'get_most_popular'} = sub {
  return $c->model('DB')->some_expensive_db_op();
};


Carl




More information about the Catalyst mailing list