モジュール構造を使用してアプリケーションを構築しようとしましたが、その方法について多くのソリューションを読みました (私が考える最良のソリューションはhttp://offshootinc.com/blog/2011/02/11/modul-bootstrapping-in-zend です) -framework/comment-page-1/ ) しかし、Blog_Bootstrap_Initializer の次のコードを Blog モジュールに別の既定のコントローラーとアクションを設定しようとすると、いくつかの問題が発生しました。
protected function _initDefaultController(){
$front = $this->getBootstrap()->getResource('frontcontroller');
$front->setDefaultAction('index');
$front->setDefaultControllerName('Auth');
print "INITIALIZING Blog";
}
INITIALIZING Blog が画面に表示されるため、メソッドが実行されますが、コードは効果がありません。application/modules/blog/configs/module.ini で設定しようとすると、同じ状況になります
resources.frontController.defaultControllerName = 'Auth'
resources.frontController.defaultAction = 'login'
または
blog.resources.frontController.defaultControllerName = 'Auth'
blog.resources.frontController.defaultAction = 'login'
アプリケーション.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "FA"
autoloadernamespaces[] = 'SilverCms'
autoloadernamespaces[] = 'FA'
autoloadernamespaces[] = 'Twitter'
; FrontController
; module enable
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.displayExceptions = 0
; default controller, action and module
resources.frontController.params.useDefaultControllerAlways = false
resources.frontController.params.prefixDefaultModule = false
resources.frontController.defaultModule = 'default'
resources.modules[] = ''
;resources.frontController.defaultControllerName = 'Index'
;resources.frontController.defaultAction = 'index'
; language plugin enable
resources.frontController.plugins.Language = SilverCms_Controller_Plugin_Language
; module plugin enable
;resources.frontController.plugins.ActiveModule = SilverCms_Controller_Plugin_ActiveModule
resources.frontController.baseurl = /zftest/public/
; Locale
resources.locale.default = "en_US"
resources.locale.force = false
; Translate
resources.translate.adapter = "Tmx"
resources.translate.data = APPLICATION_PATH "/modules"
resources.translate.locale = "auto"
resources.translate.disableNotices = true
resources.translate.scan = directory
;cahce
cache.enable = false
; Routes
resources.router.routes.module.type = Zend_Controller_Router_Route_Module
resources.router.routes.module.abstract = On
resources.router.routes.language.type = Zend_Controller_Router_Route
resources.router.routes.language.route = ":language"
resources.router.routes.language.reqs.language = "^[a-z]{2}$"
resources.router.routes.language.defaults.language = "en"
resources.router.routes.default.type = Zend_Controller_Router_Route_Chain
resources.router.routes.default.chain = "language,module"
resources.router.routes.login.route = ':language/login/'
resources.router.routes.login.defaults.controller = 'Auth'
resources.router.routes.login.defaults.action = 'login'
; View
resources.view.helperPath.View_Helper = APPLICATION_PATH "/modules/default/views/helpers"
メインのブートストラップ
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initPlugins()
{
$this->bootstrap('frontController');
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(array(
'default' => APPLICATION_PATH .'/modules/default/controllers',
'blog' => APPLICATION_PATH .'/modules/blog/controllers',
'billing' => APPLICATION_PATH .'/modules/billing/controllers',
));
$front->registerPlugin(new SilverCms_Controller_Plugin_ActiveModule());
return $front;
}
protected function _initHelpers(){
Zend_Controller_Action_HelperBroker::addPrefix('SilverCms_Controller_Action_Helper');
}
}
モジュールのメイン ブートストラップ ファイル
class Blog_Bootstrap extends SilverCms_Application_Module_Bootstrap
{
}
モジュール内の構成ファイル (module.ini)
[production]
; uruchomienie domyslnego kontrolera gdy nie zostanie podany zaden inny
blog.resources.layout.layout = "blog"
blog.resources.layout.layoutPath = APPLICATION_PATH"/modules/blog/views/layouts/scripts"
blog.resources.frontController.defaultControllerName = 'Test'
blog.resources.frontController.defaultAction = 'test'
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
私は何を間違っていますか?