重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

zendframeworkの階層について質問です。階層を深くした場合の構造が理解できません。

例えばexsample.com/test/というURLの場合
/application/controllers/TestController.php
class TestControllerAction extends Zend_Controller_Action
{
public function indexAction()
{
//略
}
}
とすればこれで問題なく動作しますが
exsample.com/hoge/test/というURLの場合はどのようにしたらいいですか?

ルーター?の設定等は特に変更はしておらずデフォルトの状態で利用しています。

A 回答 (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.control …
http://framework.zend.com/manual/ja/zend.control …
    • good
    • 0

Router_Route とか Router_Regex を使ったら応用きいていいかも。



map: hoge/cate/:id/:page
url: hoge/cate/1/2
 => params: id = 1, page = 2

みたいに。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
学習不足な為、どうやって実装すればいいものか理解できない状態です^^;

ちなみにこれは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');

上記にどのように足せば実現できるようになるのか具体的に教えて頂けないでしょうか?
宜しくお願い致します。

お礼日時:2009/11/12 14:59

> 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() となります。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。やっと理解できました^^
ちなみにもうひとつ疑問があるのですがパラーメータの場合
hoge/cate/id/1/page/2/というURLの場合にはhoge/cate.php?id=1&page2となりますよね?

パラメータが増えるに連れて階層も深く見えるのでこれをシンプルに
hoge/cate/1/2/としてhoge/cate.php?id=1&page2へのアクセスと同様に扱いたいのですが
どうすれば可能なのでしょうか?

お礼日時:2009/11/12 10:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!