Параметры настройки базы данных EE3 Multiple без ядра ' hack'

ТАКИМ ОБРАЗОМ, я пытаюсь пристроить основной файл конфигурации, чтобы использовать с развертыванием, подобным этому в EE2 для EE3. В том, чтобы включать у меня есть следующее:

$config['database'] = array (
    'expressionengine' => array (
        'hostname' => 'localhost',
        'username' => 'local-UN',
        'password' => 'local-pw',
        'database' => 'local-db',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'exp_',
        'pconnect' => FALSE
    ),
    'localhost' => array (
        'hostname' => 'localhost',
        'username' => 'local-UN',
        'password' => 'local-pw',
        'database' => 'local-db',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'exp_',
        'pconnect' => FALSE
    ),
    'production' => array (
        'hostname' => 'external-server',
        'username' => 'ext-UN',
        'password' => 'ext-pw',
        'database' => 'ext-db',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'exp_',
        'pconnect' => FALSE
    )
);

The reason I left the 'expressionengine' database in there is because of the call for it in DBConfig.php which I'll show in a moment. I know the databases are being populated because when I output print_r(ee()->config->config); I get the database array as this:

[cache_driver] => file
[database] => Array
    (
        [expressionengine] => Array
            (
                [hostname] => localhost
                [username] => local-UN
                [password] => local-pw
                [database] => local-db
                [dbdriver] => mysqli
                [dbprefix] => exp_
                [pconnect] => 
            )

        [localhost] => Array
            (
                [hostname] => localhost
                [username] => local-UN
                [password] => local-pw
                [database] => local-db
                [dbdriver] => mysqli
                [dbprefix] => exp_
                [pconnect] => 
            )

        [production] => Array
            (
                [hostname] => external-server
                [username] => ext-UN
                [password] => ext-pw
                [database] => ext-db
                [dbdriver] => mysqli
                [dbprefix] => exp_
                [pconnect] => 
            )

    )

[db_port] => 

Проблема, которую я имею, обходит следующую внутреннюю часть файл DBConfig.php:

/**
 * ExpressionEngine Database Config Class
 *
 * @package    ExpressionEngine
 * @subpackage Core
 * @category   Core
 * @author     EllisLab Dev Team
 * @link       https://ellislab.com
 */
class DBConfig implements Config {

    protected $delegate;
    protected $active_group;

    protected $defaults = array(
        'port'     => 3306,
        'hostname' => '127.0.0.1',
        'username' => 'root',
        'password' => '',
        'database' => '',
        'dbdriver' => 'mysqli',
        'pconnect' => FALSE,
        'dbprefix' => 'exp_',
        'swap_pre' => 'exp_',
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'autoinit' => FALSE,
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_unicode_ci',
        'cachedir' => '',//Set in constructor
    );

    /**
     * Create new Database Config object
     *
     * @param ConfigFile $config Config\File object
     */
    public function __construct(ConfigFile $config)
    {
        $this->delegate = $config;
        $this->active_group = $this->delegate->get(
            'database.active_group',
            'expressionengine'
        );

        $this->defaults['cachedir'] = rtrim(APPPATH, '/').'/user/cache/db_cache/';
    }

Есть ли способ динамично передать $active_group в класс DBConfig?

0
nl ja de

2 ответы

In your dynamic config, define the $config['database']['expressionengine'] group conditionally. Have a look TJ Draper's dynamic config, specifically these lines

// Set up the database
$db = array(
    'hostname' => 'localhost',
    'dbdriver' => 'mysqli',
    'dbprefix' => 'exp_',
    'pconnect' => FALSE
);

// Require environment config file
require 'config.' . ENV . '.php';

// Set the database array to the config
$config['database'] = array (
    'expressionengine' => $db,
);

В вашем config.foo.php файлы, определить $db множество, отвергая любые необходимые параметры настройки:

$db['username'] = 'xxxxxxxxxxxxxx';
$db['password'] = 'xxxxxxxxxxxxxx';
$db['database'] = 'xxxxxxxxxxxxxx';
2
добавлено
Да! Таким образом, ExpressionEngine только соединяется через последовательно называемую группу. Наличие группы во всем является небольшим количеством наследия.
добавлено автор littlecharva, источник
Право. Так ' active_group' должен быть ' expressionengine' хотя? Как, где в 2, вы могли определить в вершине database.php $active_group файла = ' expressionengine'; (или независимо от того, что вы устанавливаете во множестве $db там.) как: $db [' local'] [' hostname'] = ' localhost'; $db [' local'] [' username'] = ‘mylocaluser’; где вы могли установить его как $active_group = ' local'; действительно ли это правильно?
добавлено автор Paul Verheul, источник

@derek-jones спасибо за толчок локтем... Я закончил со следующим в моем.

/*
|-----------------------------------------------------------
| Database and Multi-environment
|-----------------------------------------------------------
| You can have whatever environments you need.
| First, build out your environment arrays.
| Then set your $active_environment to which you need to use.
*/
    $active_environment = 'production';

    $localhost = array (
        'hostname' => 'localhost',
        'username' => 'local-un',
        'password' => 'local-pw',
        'database' => 'local-db',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'exp_',
        'pconnect' => FALSE
    );

    $production = array (
        'hostname' => 'remote-host',
        'username' => 'remote-un',
        'password' => 'remote-pw',
        'database' => 'remote-db',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'exp_',
        'pconnect' => FALSE
    );

    $config['database'] = array (
        'expressionengine' => $$active_environment
    );
1
добавлено
dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Разработка СУБД
Разработка СУБД
143 участник(ов)