- ベストアンサー
zendframeworkの階層について
- zendframeworkの階層についての質問です。階層を深くした場合の構造が理解できません。
- 例えばexsample.com/test/というURLの場合、/application/controllers/TestController.phpのクラス構造は問題ありませんが、exsample.com/hoge/test/の場合はどのようにすればいいでしょうか?
- ルーターの設定はデフォルトの状態で利用しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
長ったらしいですがマニュアル通りかくとこんな感じでしょうか。 動作は未検証。 == routes.ini [production] routes.hoge.type = "Zend_Controller_Router_Route" routes.hoge.route = "hoge/:id/:page" routes.hoge.defaults.controller = "hoge" routes.hoge.defaults.action = "index" == index.php $config = new Zend_Config_Ini('routes.ini', 'production'); $router = new Zend_Controller_Router_Rewrite(); $router->addConfig($config, 'routes'); $front = Zend_Controller_Front::getInstance(); $front->setRouter($router); $front->dispatch(); http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.routes http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.add-config
その他の回答 (2)
- tany180sx
- ベストアンサー率63% (239/379)
Router_Route とか Router_Regex を使ったら応用きいていいかも。 map: hoge/cate/:id/:page url: hoge/cate/1/2 => params: id = 1, page = 2 みたいに。
- inoue_kou
- ベストアンサー率57% (27/47)
> exsample.com/hoge/test/というURLの場合はどのようにしたらいいですか? HogeController.php の testAction() が呼ばれます。 exsample.com/<コントローラー名>/<アクション名>/<パラメータ名>/<パラメータ値> 例: exsample.com/members/view/page/2 にアクセスすると MembersController.php の viewAction() に page = 2 のパラメーターでアクセスしたことになります。 デフォルトコントローラーとアクションが index なので、 exsample.com exsample.com/index exsample.com/index/index ではどれも、IndexController.php 内の indexAction() となります。
お礼
お返事ありがとうございます。やっと理解できました^^ ちなみにもうひとつ疑問があるのですがパラーメータの場合 hoge/cate/id/1/page/2/というURLの場合にはhoge/cate.php?id=1&page2となりますよね? パラメータが増えるに連れて階層も深く見えるのでこれをシンプルに hoge/cate/1/2/としてhoge/cate.php?id=1&page2へのアクセスと同様に扱いたいのですが どうすれば可能なのでしょうか?
お礼
お返事ありがとうございます。 学習不足な為、どうやって実装すればいいものか理解できない状態です^^; ちなみにこれはindex.phpで行うのでしょうか?現在のソースは以下のような感じです。 require_once 'Zend/Controller/Front.php'; require_once 'Zend/Controller/Router/Route/Regex.php'; Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true); //Zend_Controller_Front::getInstance()->setParam('noErrorHandler', true); Zend_Controller_Front::run('application/controllers'); 上記にどのように足せば実現できるようになるのか具体的に教えて頂けないでしょうか? 宜しくお願い致します。