12

いくつかのカスタム アプリケーション固有の設定があり、構成ファイルに入れたいと考えています。これらをどこに置きますか?/config/autoload/global.php および/または local.php を検討しました。しかし、システム設定を上書きしないようにするために、構成配列でどのキーを使用すればよいかわかりません。

私はこのようなことを考えていました(例えばglobal.phpで):

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

それは納得のいく方法ですか?もしそうなら、どうすればコントローラ内から設定にアクセスできますか?

ヒントは大歓迎です。

4

4 に答える 4

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"];

それは私のための仕事であり、それがあなたを助けることを願っています.

于 2013-08-10T11:08:12.557 に答える
9

以下から任意のオプションを使用できます。

オプション1

config/autoload/custom.global.php というファイルを 1 つ作成します。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'];
于 2013-08-10T17:47:38.990 に答える
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

于 2012-10-21T23:06:02.067 に答える