I’m wanting to be sure that I am setting things up correctly. On a typical website with 10 pages, would each page have it’s own controller with it’s own IndexAction and it’s own View folder with it’s own index.phtml as a view?
Or do you have one controller with multiple Page1Action, Page2Action, etc and have multiple differently named view.phtml pages within view/index folder?
I’m leaning toward the former because then I can have a cleaner controller for each page…
Is there a standard, or is it subjective?
Your sitemap would play a major role in this question. But, in lieu of that, here’s a few examples.
Example 1. Flat
You’ll probably want to use separate controllers: Foo/IndexController.php, Bar/IndexController.php, and Baz/IndexController.php with each having an indexAction() method to pass information to your view (once again separate).
Example 2. A Little Bit Lower Now
You’ll only need two controllers: Foo/BarController and Baz/IndexController. If /foo needs a landing page you’ll have to throw in a Foo/IndexController.php to be safe. Your actions are still indexAction(). Because you’ve not gone deep enough to hit that third level, your views are still index.phtml.
Example 3. Straight Line
You’re down to onc controller: Foo/BarController.php. If you need landing pages for /foo and /foo/bar you’ll need another controller for /foo (Foo/IndexController) and an indexAction() for both. With /foo/bar/baz you’re actually down to a slightly different action now too – bazAction() (inside Foo/BarController.php). Your view is now baz.phtml.
Summary.
The wider the sitemap the more controllers you have and fewer actions. The more narrow the sitemap the fewer the controllers and more actions.
Postscript.
I should also state, this is also contingent on using default routing patterns. If you do something a little more sophisticated in routing patterns, this is all shot out the window. Sometimes we use routes to keep the number of classes manageable. When we have a wide sitemap it’s possible to create some custom routes and use __call() within a controller to hand-off view data appropriately. Just another way to skin this cat.