Methinks that you have “Model” and “View” confused in your mind . . .
(See Catalyst::Manual::Intro.) The MVC view-of-the-world basically goes like this:
- Model: Access to data, manipulating data, allowing the rest of the application to functionally-ignore where the data comes from and how it is stored.
- View: The presentation layer. Templating and output-preparation goes here. (Not in the Model.)
- Controller: Everything else.
And, while the MVC paradigm is a useful way to look at some things, it really only works really-well with CRUD (Create, Read, Update, Delete) applications, where the user’s conceptual model of what he is doing is fairly close to “I am manipulating records in a database, and I can do anything I want with anything that I see.” When the application becomes more complex than that, the MVC model starts to be a bit simple-minded and application logic starts showing-up in places other than where MVC says it “ought” to be. (Even given that the role, scope and bounds of “Controller” is already quite vague.) Therefore, understand how the MVC abstraction is put together, but consider it to be an abstraction of what any given application may in fact require.
Catalyst is a good framework. Dancer is another.