Zend_Applicationを使ったZend_Router設定

今回は、以下のことをやりたかったのです。
【http://test.com/page/3/】とういうページングURLを実現しつつ、他のルーティングは既存のまま。
【http://test.com/index/index/page/3/】の indexの部分を出したくなかったのです。

それを実現するために application.ini に追加した記述が以下です。

1
2
3
4
5
6
7
8
; ルート設定
resources.router.routes.default.type = "Zend_Controller_Router_Route_Module"
 
resources.router.routes.top.type = "Zend_Controller_Router_Route"
resources.router.routes.top.route = "page/:page/"
resources.router.routes.top.defaults.controller = "index"
resources.router.routes.top.defaults.action = "index"
resources.router.routes.top.defaults.page = 1


上から順番に検索していって、最後にヒットしたルートが有効になるようです。なので、defaultルートは一番上になります。

Zend_Application_Resource_Router
=> Zend_Controller_Router_Rewrite
=> Zend_Controller_Router_Route
=> Zend_Controller_Router_Route_Module

こんな順番でソースを見てたら、面白くなってきて、興味があちこちいってしまい、
動作を確認するまでに、結構時間がかかってしまいました。

Zend_Controller_Router_Rewiteの中に、各Routeクラスを設定していく構成なんですね。
今まで、基本ルールばかりを使ってたので、勉強になりました。

途中で試した Zend_Controller_Route_Regex を動作させれなかったのが気になるので、近いうちにまた実験しします。