Хочу поинтересоваться - может кто-то подскажет каким образом можно просто включать и отключать модули в сайте?
Дело в том, что каждый раз комментить/убирать значения в конфиге не очень хочется, хотел какое-то более изящное решение придумать - типа сунул папку с модулем и оно отразилось в меню, и т.д.
Сейчас же надо по меньшей мере править в конфиге 'modules' => array(), 'import'=>array(), да и каждый модуль еще несет с собой обычно немало 'rules'=>array() из UrlManager…
сделать свой конфигаратор, который будет настройки хранить в базе данных?
Это можно сделать, если создать свой класс Yii(потомок YiiBase) и перегрузить в нем метод createWebApplication(), если исходить из того, как это было задумано в фреймворке.
Т.е. выгрузить весь hard-config (это у меня так называется конф, который от CWebApplication с настоойками БД, путей и т.д.) в базу данных, то будет мне щастье?)
А как быть с тем, что настройки БД в конфиге, а конфиг в БД?
Нет нигде howto как перевести конфиг с файла на базу?
Нет, по той причине, что это частное решение. Весь конфиг выгружать в базу смысла нет. Нужно вынести в базу только ту информацию, которая должна динамически меняться на протяжении жизни приложения. Остальная низкоуровневая и фундаментальная конфигурация(настройки БД и т.д.) должна храниться в файле.
Получается, в БД я вынесу настройки путей + пару строк для импорта компонентов. Насколько хорошо что uri rules будут в базе? я встречал движки которые так делают. По скорости я проиграю или наоборот?
И все таки есть ли какой-то туториал? Не нашел что-то.
Нашел решение, но пока не знаю как осуществить до конца, буду рад если кто-то даст дельный совет:
В index.php есть основной конфиг - для основного приложения он представляет из себя файл php который возвращает массив, это все знают, думаю.
Я сделал подобные файлы для модулей, но только с теми ключами массива конфига, которые присущи данному модулю: только его uri правила, только его автоимпорт и т.д.
Конечная цель - надо сделать array_merge_recursive этих конфигов и основного, т.к. функция инициализации приложения принимает 1 аргумент - config. Т.е. мне надо запустить сайт с конфигом уже расширенным с учетом подключенных модулей. Это я делаю пробегаясь рекурсивно по директории с модулями и ищу файлы конфигов.
Т.е. я вроде бы понимаю, что мне их надо всех проинклюдить и как-то слить воедино, но как - может кто подскажет? Спасибо. 4 час сижу пыхчу, мозги сплавились
Спасибо, думал что близок к истине - ан нет, там происходит подцепление одного файла с конфигом дополнительного, а у меня речь идет о неизвестном заранее их кол-ве, ведь оно известно только после обхода директории с модулями и нахождения там конфига нужного.
Вроде все сделал как мне надо, но столкнулся с проблемой: вызываю в дополнительном конфиге return CMap - Fatal error: Class 'CMap' not found in S:\home\demo.stlanik.local\htdocs\protected\modules\advertisements\conf_advertisements.php on line 3
Он его не видит. Пробовал подключить его через require, он потребовал еще один класс. Мне кажется это не самое правильное решение будет. если я нацепляю кучу нужных классов.