コントローラを多層化する
http://d.hatena.ne.jp/noopable/20090205/1233792325
のコメント欄を見て知った。
Zend Frameworkは、コントローラの多層化できるんだ。
もっと早く知っていれば…
具体的な方法。
コントローラは
controllers/Foo/Bar/BazController.php
というパスで、クラス名は「Foo_Bar_BazController」とする。
ビューも同じようにファイルパスは
views/scripts/foo/bar/baz/index.phtml
で、アクセスするURLは
http://example.com/foo_bar_baz/index
となる。
ちなみに、モジュール構造を採用している場合は
クラス名は「<モジュール名>_Foo_Bar_BazController」
ビューのファイルパスは
views/scripts/<モジュール名>/foo/bar/baz/index.phtml
で、URLは
http://example.com/<モジュール名>/foo_bar_baz/index
となる。
ちなみに、コントローラ名が複数語で構成されている場合
例えば「Foo_Bar_MyHogeFugaController」とすると
アクセスURLは
http://example.com/<モジュール名>/foo_bar_my-hoge-fuga/index
となる。
多層化のパスの区切りがアンダーバー。
単語の区切りがハイフン。
…という、ちょっとわかりにくいルール…
まぁこのあたりは、Zend Frameworkのデフォルトルーティング使わず
ちゃんとマッピングルールを作った方がいいでしょうね。