0

我有一个基于模块的 zend 应用程序。我正在尝试根据定义的版本号(参数)适当地路由模块,即。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 回答