Задать вопрос
@frmax
человек

Как изменить массив $config?

Добрый день,

мне надо менять конфиг при различном нажатии кнопок.
К примеру есть
<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=db',
    'username' => 'root',
    'password' => '12345',
//    'dsn' => 'mysql:host=serser;dbname=db',
//    'username' => 'root',
//    'password' => '54321',
];


Вот при нажатии тест должен один с работать, а при нажатии на кнопку нетест должен другой. Подскажите как мне это правильно сделать? Спасибо!
  • Вопрос задан
  • 198 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@frmax Автор вопроса
человек
Спасибо, направили сделал с помощью хранилища.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bitver
@bitver
Допустим есть 4 файла main.php, middle.php, main-local-test.php, main-local-prod.php. В main.php хватаете содержимое middle.php. middle.php генерится вами при нажатии на кнопку, в котором идёт подгрузка или из main-local-test.php или из main-local-prod.php.

P.S. Не делайте так, в смысле кнопками, ну не надо, есть решения и получше честно )
Ответ написан
@dimabdc
Если Вам нужен доступ к нескольким базам, то создай 2 конфига подключения:
db.php
<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=db',
    'username' => 'root',
    'password' => '12345',
];

db2.php
<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=serser;dbname=db',
    'username' => 'root',
    'password' => '54321',
];

и подключите их в web.php
'db' => require(__DIR__ . '/db.php'),
'db2' => require(__DIR__ . '/db2.php'),

Соответственно для выборки из первой базы будет
$posts = Yii::$app->db->createCommand('SELECT * FROM post')->queryAll();
, из второй
$posts = Yii::$app->db2->createCommand('SELECT * FROM post')->queryAll();


А если Вам вообще нужны будут разные конфигурации, то создайте 2 конфига web.php и web2.php и меняйте их в web/index.php, например по условию GET параметра
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы