当把自定义设置在Zend框架2?(Where to put custom settings in Z

2019-08-01 16:45发布

我有一些自定义应用程序特定的设置,我希望把配置文件。 我会在哪里把这些? 我认为/config/autoload/global.php和/或local.php。 但我不知道哪个键(S)我应该在配置阵列中使用,以确保不覆盖任何系统设置。

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

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

那是一个愉快的方式? 如果是这样,我怎么能访问,例如从控制器中的设置?

提示的高度赞赏。

Answer 1:

如果你需要创建一个特定的模块自定义配置文件,您可以创建模块/ 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"];

它是为我工作,希望它帮助你。



Answer 2:

你用你的module.config.php

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

  //all default ZF Stuff
);

里面的*Controller.php你会通过调用您的设置

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

就这么简单 :)



Answer 3:

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

选项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'];


Answer 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



文章来源: Where to put custom settings in Zend Framework 2?