2010年9月15日水曜日

zend frameworkでルーターの設定をiniファイルで行う

どうも、俺@仕事中です。

今日はZendFrameworkでルーティングの設定(Zend_Controller_Router_Route)を直接コードに書かずにiniファイルで行う設定方法の備忘録です。

1)通常のルーティング
$ vim configs/router.ini
-------------------------------
routes.default.type = "Zend_Controller_Router_Route"
routes.default.route = ":controller/:action/*"
routes.default.defaults.module = "module_name" ; モジュール名
routes.default.defaults.controller = "index" ; デフォルトコントローラ名
routes.default.defaults.action = "index" ; デフォルトアクション名

$ vim public/index.php
-------------------------------
$router = Zend_Controller_Front::getInstance()->getRouter();
$config = new Zend_Config_Ini(APPLICATION_PATH . "/configs.router.ini");
$router->addConfig($config, "routes");
これであれば
http://koexuka.blogspot.com/foo/bar/
というURLでアクセスのあった場合、「module_name」モジュールの「foo」コントローラの「bar」アクションが呼ばれます。


2)ホスト名によるルーティング
$ vim configs/router.ini
--------------------------------
; デフォルト
routes.default.type = "Zend_Controller_Router_Route"
routes.default.route = ":controller/:action/*"
routes.default.defaults.module = "module_name"
routes.default.defaults.controller = "index"
routes.default.defaults.action = "index"

; 携帯用
routes.mobile.type = "Zend_Controller_Router_Route_Hostname"
routes.mobile.route = "m.koexuka.blogspot.com"; ホスト名はm
routes.mobile.defaults.module = "mobile"; mobileモジュールへ
routes.mobile.defaults.controller = "index"
routes.mobile.defaults.action = "index"
routes.mobile.chains.path.type = "Zend_Controller_Router_Route"
routes.mobile.chains.path.route = ":controller/:action/*"
routes.mobile.chains.path.defaults.controller = "index"
routes.mobile.chains.path.defaults.action = "index"

$ vim public/index.php
-------------------------------
$router = Zend_Controller_Front::getInstance()->getRouter();
$config = new Zend_Config_Ini(APPLICATION_PATH . "/configs.router.ini");
$router->addConfig($config, "routes");
これで
http://m.koexuka.blogspot.com/foo/bar
というURLでアクセスのあった場合、「mobile」モジュールの「foo」コントローラの「bar」アクションが呼ばれます。


設定ファイルを利用した方がよりスマートだと思います。

以上でぇぇえぇす。

0 件のコメント: