Как настроить Codeigniter для обработки нескольких проектов с общей базой ci?
-
20-09-2019 - |
Вопрос
Я видел несколько примеров реализации CI, в которых утверждается, что вы можете поместить папки проекта в папку "приложения" для Codeigniter.
Однако я не смог увидеть эту работу, как было обещано.
Вот что я сделал и что хотел бы сделать - может быть, вы сможете мне помочь.В качестве аргумента мой корневой каталог документа - / www / (это не так, но давайте используем его для простоты)
Я поместил ядро codeigniter в /www/corelib/codeigniter
Я поместил системную папку codeigniter в /www/ci_system
Я поместил каталог приложений в / www/applications
Я поместил свою "точку входа" в /www/ dd
Теперь предположим, что у меня есть два проекта :"dataentry" и "cpanel"
Идеи заключаются в том, что я могу пойти в
h**p://mydomain/dd/dataentry // для приложения dataentry и
h**p://mydomain/dd/cpanel // для приложения cpanel.
ЕСЛИ я организую каталоги dataentry и cpanel следующим образом:
/www/приложения/контроллеры/dataentry
/www/приложения/контроллеры/cpanel
/www/приложения/модели/dataentry
/www/приложения/модели/cpanel
/www/приложения/ представления/dataentry
/www/приложения/ просмотры/cpanel
Я могу заставить это работать нормально.Однако то, что я хотел бы сделать, это сохранить модель и представление на том же уровне, что и контроллер, чтобы у меня было следующее:
/www/приложения/ввод данных/контроллеры
/www/приложения/ввод данных/модели
/www/приложения/ввод данных / представления
/www/приложения/cpanel/контроллеры
/www/приложения/cpanel/модели
/www/приложения/cpanel/просмотры
Похоже, это не работает.
Есть какие-нибудь предложения?
-CF
Решение 2
Хорошо - у меня все работает так, как хотелось.Я постараюсь написать более подробное "практическое руководство" и предоставлю ссылку в разделе комментариев.
Мне не пришлось изменять .htaccess больше, чем требует CI - я был рад этому.Мой каталог записей выглядит следующим образом:
/dd/index.php
Две ключевые части находятся здесь:
list($blank, $webpath, $app) = explode('/', $_SERVER['REQUEST_URI']);
$application_folder = $_SERVER['DOCUMENT_ROOT]."/applications/$app";
Это позволяет одному index.php обрабатывать все приложения.
Часть, которую я упустил, заключается в том, что AppName теперь также должен быть основным контроллером или быть каталогом внутри контроллеров.(Настоящая проблема, с которой я столкнулся, заключалась в том, что я так много хакал, что у меня были конфигурации и маршруты, мешающие мне понять, что я на самом деле вижу :Иногда начинать с чистого листа просто необходимо.)
Другие советы
Имеет ли каждое приложение ("dataentry" и "cpanel") свой собственный main index.php файл, который определяет соответствующую переменную $application_folder?
Кроме того - и я уверен, что вы читали документы - но Документация CodeIgniter указывает, что каталог /applications (или каталоги, в вашем случае) должен существовать в каталоге /system следующим образом:
system/application/foo/
system/application/foo/config/
system/application/foo/controllers/
system/application/foo/errors/
system/application/foo/libraries/
system/application/foo/models/
system/application/foo/views/
system/application/bar/
system/application/bar/config/
system/application/bar/controllers/
system/application/bar/errors/
system/application/bar/libraries/
system/application/bar/models/
system/application/bar/views/