[Zend Framework] Zend_Controller: ルーティングを変更して、任意のURIでアクセスできるようにする(2)

URIの変更を行う場合に必要なルーティング設定に関して確認します。
今回は Zend_Controller_Router_Route を試してみます。
Zend Framework Version: 1.12.3

下記のようなURIで、該当ユーザーのユーザーページを表示するようなイメージでルーティングしてみます。

http://sample.dev:10088/user/jiro

ダミーを用意

News コントローラの index アクションに、ユーザーのアドレスブックを表示する処理を何となく追加します。

application/controllers/NewsController.php
    public function indexAction()
    {
        // action body
        $db = Zend_Registry::get('db');
        if ($this->getRequest()->getParam('name'))
        {
            $name = $this->getRequest()->getParam('name');
            $select = $db->select()->from('addressbook')->where("name = '{$name}'");
        } else {
            $select = $db->select()->from('addressbook');
        }
        $db->setFetchMode(Zend_Db::FETCH_OBJ);
        $result = $db->fetchAll($select);
        $this->view->assign('result', $result);
    }

こんなURIで jiro さんの情報が表示されます。

http://sample.dev:10088/news/index?name=jiro
http://sample.dev:10088/news/index/name/jiro

Zend_Controller_Router_Route

application.ini に設定を追加します。

application/configs/application.ini
resources.router.routes.user.type = "Zend_Controller_Router_Route"
resources.router.routes.user.route = "user/:name"
resources.router.routes.user.defaults.module = "default"
resources.router.routes.user.defaults.controller = "news"
resources.router.routes.user.defaults.action = "index"
resources.router.routes.user.defaults.name = ""

上記でこれに置き換わっています。

http://sample.dev:10088/news/index?name=
=> http://sample.dev:10088/user/

:name が動的に値を入れてくれるので、結果、下記で目的を果たせるようになりました。

http://sample.dev:10088/user/jiro