【问题标题】:Including settings in to module class在模块类中包含设置
【发布时间】:2013-08-22 23:49:51
【问题描述】:

我的 module.config.php 文件有以下摘录:

返回数组( 'service_manager' => 数组( '别名' => 数组( 'Util\Dao\Factory' => 'modelFactory', ), '工厂' => 数组( 'modelFactory' => 函数($sm){ $dbAdapter = $sm->get('Doctrine\ORM\EntityManager'); 返回新的 \Util\Dao\Factory($dbAdapter); }, ) ), '教义' => 数组( '驱动程序' => 数组( 'application_entities' => 数组( 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', '缓存' => '数组', '路径' => 数组( __DIR__ 。 '/../src/应用程序/模型' ), ), 'orm_default' => 数组( '驱动程序' => 数组( '应用程序\模型' => 'application_entities' ) ), ), ),

如何将块“学说”放在模块类中?

【问题讨论】:

  • 你不需要任何模块的MODULE文件中的Doctrine设置

标签: zend-framework zend-framework2


【解决方案1】:

嗯,这实际上相当简单。可能你的 Module 类有 getConfig() 方法。该方法通常会加载moduleName/config/module.config.php

所以无论你是什么函数,只需调用getConfig()-方法。这是纯粹和基本的 php ;)

//Module class
public function doSomethingAwesome() {
    $moduleConfig   = $this->getConfig();
    $doctrineConfig = isset($moduleConfig['doctrine'])
                        ? $moduleConfig['doctrine']
                        : array('doctrine-config-not-initialized');
}

但是您需要注意,这仅包括您的模块配置。如果您需要访问合并的配置,则需要在onBootstrap()-方法中进行。可以这样完成:

//Module class
public function onBootstrap(MvcEvent $mvcEvent)
{
    $application   = $mvcEvent->getApplication();
    $serviceLocator = $application->getServiceLocator();
    $mergedConfig   = $serviceLocator->get('config');
    $doctrineConfig = isset($mergedConfig['doctrine']) 
                        ? $mergedConfig['doctrine'] 
                        : array('doctrine-config-not-initialized');
}

如果您要附加到某些事件,则此方法类似...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2018-03-24
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2015-02-10
    相关资源
    最近更新 更多