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 を動作させれなかったのが気になるので、近いうちにまた実験しします。