Подтвердить что ты не робот

Где установить пользовательские настройки в Zend Framework 2?

У меня есть специальные настройки для конкретного приложения, я хочу добавить файл конфигурации. Куда бы я их положил? Я считал /config/autoload/global.php и/или local.php. Но я не уверен, какие ключи я должен использовать в конфигурационном массиве, чтобы не переопределять какие-либо системные настройки.

Я думал о чем-то подобном (например, в global.php):

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

Это приятный способ? Если да, то как я могу получить доступ к настройкам, например. изнутри контроллера?

Советы приветствуются.

4b9b3361

Ответ 1

Если вам нужно создать собственный файл конфигурации для определенного модуля, вы можете создать дополнительный файл конфигурации в папке module/CustomModule/config, примерно так:

module.config.php
module.customconfig.php

Это содержимое вашего файла module.customconfig.php:

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

Затем вам нужно изменить способ getConfig() в файле CustomModule/module.php:

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

это работа для меня и надеюсь, что она вам поможет.

Ответ 2

Вы используете module.config.php

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

  //all default ZF Stuff
);

Внутри *Controller.php вы можете позвонить своим настройкам через

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

Это так просто:)

Ответ 3

Вы можете использовать любую опцию из следующих.

Вариант 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'];

Ответ 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