0

モジュール構造を使用してアプリケーションを構築しようとしましたが、その方法について多くのソリューションを読みました (私が考える最良のソリューションは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

私は何を間違っていますか?

4

0 に答える 0