0

モジュールベースの zend アプリケーションがあります。定義されたバージョン番号 (param) に基づいて、モジュールを適切にルーティングしようとしています。domain.com/api/v1.

私のアプリは次のようになります

-application
...
--modules 
----default
----api
----api2
...

ブートストラップ ルーティングにルーターがありますが、既定のモジュール 'api' にルーティングされます。

    $frontController = Zend_Controller_Front::getInstance();

    $router = $frontController->getRouter();

    $route = new Zend_Controller_Router_Route(
                    'api/:apiversion/:controller/:action/*',

                    array('module' => 'api',
                        'apiversion' => ':apiversion',
                        'controller' => ':controller',
                        'action' => ':action')
    );

    $router->addRoute('api', $route);

apiversion パラメーター「v1」、「v2」に基づいてルーティングするにはどうすればよいですか?

domain.com/api/v2/users/id/5 =>  /api2/users/id/5

-はい、ユーザー入力 domain.com/api2/ を使用できることは理解しています ... -私が望むものではありません。

- はい、ユーザーが domain.com/api/version/2 を入力できることを理解しています ... -私が望むものではありません。

私が望むものが達成できない場合にのみ、私はそれらを行います。ありがとうございました :)

->getParam("v1") を実行して存在するかどうかを確認し、適切なモジュールを設定できると思いますが、かなり動的な方法がない限り

4

1 に答える 1

1

そのようなことをするのはどうですか:

$frontController = Zend_Controller_Front::getInstance();

$router = $frontController->getRouter();

$route = new Zend_Controller_Router_Route(
            'api/v1/:controller/:action/*',

            array('module' => 'api',
                'apiversion' => 'v1',
                'controller' => ':controller',
                'action' => ':action')
);

$router->addRoute('api', $route);
$route2 = new Zend_Controller_Router_Route(
            'api/v2/:controller/:action/*',

            array('module' => 'api2',
                'apiversion' => 'v2',
                'controller' => ':controller',
                'action' => ':action')
);

$router->addRoute('api2', $route2);

よろしく

ミミズ

于 2012-08-16T20:42:53.390 に答える