There is a certain point where decision making regarding MVC becomes a little less sparse and dry. For a very small (and simple) site, you may need only one controller that will do all your work for you, pulling data from models and creating views. You can, of course, create your MVC architecture so that all models and views are created by one controller, but, of course, this quickly falls apart as soon as you get to the site even with remote complexity.
My recommendation is to make your controllers conceptually separate, just as you could design an application in a modular way. I would have a BlogController with all my blogs and page service, ContactController, PortfolioController, all inheriting from the main PageController, to make sure that when the complexity of these different parts of my site expanded, I could support them without a big ol 'SoupController.
source share