Я использую CodeIgniter для разработки нового веб-приложения, и я хотел бы создать мобильную версию, что пользователи получают перенаправление к тому, когда они посещают его из своих телефонов.
Мобильная версия приложения должна иметь другой поток, так свопинг файлов CSS/HTML в коде не является опцией для меня начиная с мобильной версии, и веб-версия обработает вещи по-другому в их Контроллерах и Представлениях при совместном использовании тех же Моделей.
Так или иначе, как я мог сделать это эффективно?
Ваша справка очень ценится.:)
Если вам действительно нужно 2 независимых приложения, вы можете настроить это с помощью всего одной или двух модификаций ядра Codeigniter, в зависимости от того, используете ли вы PHP4 или 5.
Мы сделали это, следуя этой вики-странице CI, и это отлично работает, мы разделяем модели, библиотеки, конфигурацию. По сути, у вас получилась вот такая организация проекта:
/application/
/common/<similar to application directory, but used for shared libs/helper/models/configs files>
/frontend/<similar to application directory>
/backend/<similar to application directory>
/system/
Переопределяя загрузчики, вы можете реализовать приоритет загрузки, если одна и та же lib/config присутствует для общих классов или специфичных для приложения). Также вы можете перенести весь общий код (контроллеры, специфический класс маршрутизации и т.д.) и оставить в своих приложениях только перегрузки, специфичные для приложения.
В итоге вы получаете два контроллера Front (в основном идентичные файлу index.php) по одному для каждого приложения, и вы можете свободно фильтровать посетителей с помощью переписывания url, специфического поддомена и т.д.
Если вы нацелены на серверы под управлением PHP4, я открыл эту тему на форумах codeigniter, чтобы посмотреть, что нужно изменить в основных классах, чтобы заставить его работать (без изменений есть проблема с загрузкой)
Еще одна жизнеспособная альтернатива, но я ее еще не использовал, это использование организации HMVC
Решение (a):
Примечание: (a) становится беспорядочным, если ваше приложение растет со временем.
Решение (b):
Любое из вышеперечисленных решений требует (обширной?) модификации CI-фреймворка. Постарайтесь сделать как можно больше, перезаписав существующие классы (MY_Controller и т.д.), чтобы иметь возможность обновить их в более позднее время.