[Catalyst] many Views that may include common display fragments

Steve H s_t_e_v_e_h at hotmail.com
Wed Apr 25 14:43:38 GMT 2007

> > Ugh...   Assume that the view gets everything from controller.  Then 
> > 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
>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();

Thanks all for your interest and comments.

One significant issue with this one also is that many of the things to be 
assembled on the final page could appear on many different pages.   So the 
issue is around how to generalise those common functions, to be accessible 
(optionally) from many pages.

...unfortunately, and as a stop-gap measure, the easiest and most robust way 
of handling it has been to bloat the Seamstress skeleton.pm with it -- i.e. 
lots of pre-parsed html fragments and logic that will optionally flesh them 
out and bolt them into the main doc as appropriate.
...sort of blows away some of the Controller/View separation ... but the 
final skeleton seems to be the only place that things are brought together 
Please let me know if I'm missing something fundamental here... but at face 
value, I couldn't see any intrinsic capability for that sort of thing... 
much needed in enterprise (size/complexity) applications... to avoid going 
the WebSphere/Portal route.  The app I'm working on is a CRM one... with 
various dashboard status, hot-list and other fragments that need displaying 
on many different pages.


Advertisement: 1000s of Sexy Singles online now at Lavalife - Click here 

More information about the Catalyst mailing list