Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: YII: Изменения конфигурационного файла из админки приложения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
NeuroZ
Отправлено: 27 Марта, 2014 - 09:46:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Не могу найти решения. Перечитал много статей на хабре - везде вокруг, да около.
Суть задачи:
Есть приложение с модулем админки. Я хотел бы иметь возможность менять хост, логин, пароль к бд (и прочие данные из конфигурационного файла) из модуля админки.
Мне не понятно - как правильно извлечь необходимые значения и перезаписать их при необходимости?

p.s. Просто не хочу сооружать кривокод, поэтому и хочу услышать совет профессионалов.
 
 Top
esterio
Отправлено: 27 Марта, 2014 - 10:07:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




ну например так
PHP:
скопировать код в буфер обмена
  1.         'connectionString' => 'mysql:host=localhost;dbname=tests;',
  2.         'username' => 'root',
  3.         'password' => '',
  4. )));
  5.  
  6. return array(
  7.         'components' => array(
  8.                 'db' => unserialize(file_get_contents('db.cfg'))
  9.         )
  10. );


там есть еще мердж конфигов и много другого

http://www[dot]yiiframework[dot]com/wiki/?tag=config
http://www[dot]yiiframework[dot]com/wiki[dot][dot][dot]only-with-files/
 
 Top
NeuroZ
Отправлено: 27 Марта, 2014 - 10:31:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




esterio пишет:
там есть еще мердж конфигов и много другого

Ну с мерджем я вроде разобрался - это не совсем то, что нужно.

А вот данный пример очень похож на то, что ищу.
Но. У нас в конфиге также содержаться и множество других данных. Например подключаемые модули и т.п.
Т.е. получается нам сначала нужно извлечь все данные из файла, а потом перезаписать его, но с уже измененными данными. Как в таком случае быть? Возможно ли все данные из файла записать в соответствующий массив?
Иными словами выолнить что-то вроде
PHP:
скопировать код в буфер обмена
  1. $arr = file_get_contents('main.php');
  2. foreach ($arr as $tempArr) {}

(Отредактировано автором: 27 Марта, 2014 - 10:37:39)

 
 Top
esterio
Отправлено: 27 Марта, 2014 - 10:44:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




ну так получите весь массив и мердж конфигов, там ничего сложного нету, я привел только для DB, но ничто не мешает весь массив components
 
 Top
NeuroZ
Отправлено: 27 Марта, 2014 - 10:51:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




esterio пишет:
ну так получите весь массив и мердж конфигов, там ничего сложного нету, я привел только для DB, но ничто не мешает весь массив components

Так в Вашем примере нет конкретно получения массива. Вы просто в ручную создаете конфиги базы и записываете их в пустой (или пока не существующий) файл. А если в файле уже есть какие-то данные (мы не знаем какие именно) - допустим мы их вытащим как в моем примере, но это будет лишь текстовая строка. А как получить из файла реальный массив?
p.s. Да, и для чего вообще мы выполняем serialize?

(Отредактировано автором: 27 Марта, 2014 - 10:53:15)

 
 Top
esterio
Отправлено: 27 Марта, 2014 - 10:58:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




UPDATE
PHP:
скопировать код в буфер обмена
  1.         'db' => array(
  2.                 'connectionString' => 'mysql:host=localhost;dbname=tests;',
  3.                 'username' => 'root',
  4.                 'password' => '',
  5.         )
  6. )));
  7.  
  8.  
  9.  
  10. $config = array(
  11.         'components' => array(
  12.                 'urlManager' => array(
  13.                         'urlFormat' => 'path',
  14.                 )
  15.         )
  16. );
  17.  
  18. $config['components'] = array_merge($config, unserialize(file_get_contents('my.cfg')));
  19. return $config;



Также сюда загляните
http://www.yiiframework.com/doc/api/1.1/CMap

(Отредактировано автором: 27 Марта, 2014 - 11:00:47)

 
 Top
NeuroZ
Отправлено: 27 Марта, 2014 - 12:08:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Спасибо за советы
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB