モジュールを使用して ZendFramework 1.12 アプリケーションを作成しました。アイデアは、RESTfull パスを使用して、モジュールに API のバージョンを含めることでした。
デフォルトのモジュールは V1 でしたが、v1s1 モジュールを作成しようとすると、すべてのリンクが引き続き V1 につながります。
これを解決する方法を誰かが正しい方向に押し進めることができますか?
詳細
これは、モジュールを使用するために必要なコードです。
application.ini
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "v1"
resources.modules[] =
v1.boostrap.path = APPLICATION_PATH "/modules/v1/Bootstrap.php"
resources.frontController.plugins.putHandler = Zend_Controller_Plugin_PutHandler
routes.rest.type = Zend_Rest_Route
routes.rest.defaults.module = v1
メインBootstrap.php
:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAppAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'V1s1',
'basePath' => APPLICATION_PATH . '/modules/v1s1',
));
$autoloader->addResourceType('model', 'models', 'Model');
return $autoloader;
}
}
V1 Bootstrap.php
:
class V1_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected $_moduleName = "v1";
protected function _initAutoload()
{
// Add autoloader empty namespace
$autoLoader = Zend_Loader_Autoloader::getInstance();
$autoLoader->registerNamespace('v1_');
return $autoLoader;
}
protected function _initResourceLoader()
{
Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/modules/v1/controllers/helpers');
}
public function _initRouts()
{
$front = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front, array(), $arrayOfControllers));
$front->getRouter()->addRoute('rest', $restRoute);
}
}
ここで、モジュール v2 を作成する必要がありますが、それを行うと、すべてがクラッシュします。リンクは RESTfull ではなくなり、すべてのリンクは引き続き V1 モジュールにつながります。V2 モジュール Bootstrap.php にアクセスしています。