Многосайтовая конфигурация Kohana 3.2

Прямо сейчас я делюсь Kohana::Core между многими сайтами на одном сервере на основе этого учебник. Я хотел бы сделать еще один шаг и поделиться всем (контроллеры, представления, модели), кроме конфигураций и контента. Является ли это возможным? Я использую поле table_prefix в конфигурации базы данных, чтобы различать таблицы для каждого сайта. Я хотел бы динамически загружать базу данных конфигурации базы данных по параметрам URL-адреса - я думаю, это должно работать.

Я думал об изменении маршрутов на:

 Route::set('default', '(<site>(/<controller>(/<action>(/<parametr>)))))')
        ->defaults(array(
                   'controller' => 'mainpage',
                   'action' => 'index',
                   ));

Но на данный момент я понятия не имею, в каком месте и как я должен проверять и загружать соответствующие конфиги.


person Krzysztof Bzowski    schedule 28.01.2013    source источник


Ответы (2)


Есть несколько способов сделать это,

в одну сторону:

создайте класс Controller_Base, поместите туда метод перед ()

в этом методе возьмите параметр <site>, используя $this->request->param('site').

теперь вы можете загрузить файл конфигурации в случае переключения или с помощью параметра <site>, установив имя конфигурации для каждого сайта как <site>

теперь в каждом контроллере вы должны расширить метод Controller_Base, помещенный перед(), и в этом методе используйте parent::before()

Надеюсь, я помог тебе

person Roey Haim    schedule 05.02.2013

Я нашел лучшее и самое элегантное решение. Я переместил свое приложение в каталог модулей. Это было довольно легко. Пришлось сменить bootstrap.php на init.php, удалив все, кроме роутинга. Теперь я могу использовать все контроллеры, модели и представления много раз со стандартной мультисайтовой конфигурацией.

person Krzysztof Bzowski    schedule 05.02.2013