在Zend Framework 2中放置自定义设置的位置?

时间:2012-10-20 22:08:20

标签: zend-framework2

我有一些自定义应用程序特定设置,我想放入配置文件。我会把这些放在哪里?我考虑过/config/autoload/global.php和/或local.php。但是我不确定在配置数组中应该使用哪些密钥以确保不覆盖任何系统设置。

我在想这样的事情(例如在global.php中):

return array(
    'settings' => array(
        'settingA' => 'foo',
        'settingB' => 'bar',
    ),
);

这是一种令人愉快的方式吗?如果是,我该如何访问设置,例如在控制器内?

提示非常感谢。

4 个答案:

答案 0 :(得分:16)

如果您需要为特定模块创建自定义配置文件,可以在 module / CustomModule / config 文件夹中创建其他配置文件,如下所示:

module.config.php
module.customconfig.php

这是 module.customconfig.php 文件的内容:

return array(
    'settings' => array(
        'settingA' => 'foo',
        'settingB' => 'bar',
    ),
);

然后你需要在 CustomModule / module.php 文件中更改 getConfig()方法:

   
public function getConfig() {
    $config = array();
    $configFiles = array(
        include __DIR__ . '/config/module.config.php',
        include __DIR__ . '/config/module.customconfig.php',
    );
    foreach ($configFiles as $file) {
        $config = \Zend\Stdlib\ArrayUtils::merge($config, $file);
    }
    return $config;
}

然后您可以在控制器中使用自定义设置:

 $config = $this->getServiceLocator()->get('config');
 $settings = $config["settings"];

这对我有用,希望对你有所帮助。

答案 1 :(得分:12)

您使用module.config.php

return array(
    'foo' => array(
        'bar' => 'baz'
    )

  //all default ZF Stuff
);

*Controller.php内,您可以通过

调用您的设置
$config = $this->getServiceLocator()->get('config');
$config['foo'];

就这么简单:)

答案 2 :(得分:8)

您可以使用以下任何选项。

选项1

创建一个名为config / autoload / custom.global.php的文件。在custom.global.php

return array(
    'settings' => array(
        'settingA' => 'foo',
        'settingB' => 'bar'
    )
)

在控制器中,

$config = $this->getServiceLocator()->get('Config');
echo $config['settings']['settingA'];

选项2

在config \ autoload \ global.php或config \ autoload \ local.php

return array(
    // Predefined settings if any
    'customsetting' => array(
        'settings' => array(
            'settingA' => 'foo',
            'settingB' => 'bar'
         )
    )
)

在控制器中,

$config = $this->getServiceLocator()->get('Config');
echo $config['customsetting']['settings']['settingA'];

选项3

在module.config.php

return array(
    'settings' => array(
        'settingA' => 'foo',
        'settingB' => 'bar'
    )
)

在控制器中,

$config = $this->getServiceLocator()->get('Config');
echo $config['settings']['settingA'];

答案 3 :(得分:4)

如果你查看config/application.config.php它会说:

'config_glob_paths'    => array(
    'config/autoload/{,*.}{global,local}.php',
),

因此,ZF2默认情况下会自动加载来自config/autoload/的配置文件 - 例如,您可能会myapplication.global.php它将被拾取并添加到配置中。

Evan.pro撰写了一篇博文,内容涉及:https://web.archive.org/web/20140531023328/http://blog.evan.pro/environment-specific-configuration-in-zend-framework-2