我有一些自定义应用程序特定的设置,我希望把配置文件。 我会在哪里把这些? 我认为/config/autoload/global.php和/或local.php。 但我不知道哪个键(S)我应该在配置阵列中使用,以确保不覆盖任何系统设置。
我在想这样的事情(例如,在global.php):
return array(
'settings' => array(
'settingA' => 'foo',
'settingB' => 'bar',
),
);
那是一个愉快的方式? 如果是这样,我怎么能访问,例如从控制器中的设置?
提示的高度赞赏。
如果你需要创建一个特定的模块自定义配置文件,您可以创建模块/ 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"];
它是为我工作,希望它帮助你。
你用你的module.config.php
return array(
'foo' => array(
'bar' => 'baz'
)
//all default ZF Stuff
);
里面的*Controller.php
你会通过调用您的设置
$config = $this->getServiceLocator()->get('config');
$config['foo'];
就这么简单 :)
您可以使用从以下的任何选项。
选项1
创建一个文件名为config /自动加载/ custom.global.php。 在custom.global.php
return array(
'settings' => array(
'settingA' => 'foo',
'settingB' => 'bar'
)
)
和控制器,
$config = $this->getServiceLocator()->get('Config');
echo $config['settings']['settingA'];
选项2
在配置\自动加载\ global.php或配置\自动加载\ 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'];
如果你在看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