Создание мобильной версии для моего веб-приложения в CodeIgniter

Я использую CodeIgniter для разработки нового веб-приложения, и я хотел бы создать мобильную версию, что пользователи получают перенаправление к тому, когда они посещают его из своих телефонов.

Мобильная версия приложения должна иметь другой поток, так свопинг файлов CSS/HTML в коде не является опцией для меня начиная с мобильной версии, и веб-версия обработает вещи по-другому в их Контроллерах и Представлениях при совместном использовании тех же Моделей.

Так или иначе, как я мог сделать это эффективно?

Ваша справка очень ценится.:)

13
задан KeyStroke 27 May 2010 в 12:22
поделиться

2 ответа

Если вам действительно нужно 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

4
ответ дан 2 December 2019 в 02:05
поделиться

Решение (a):

  • Проверьте в глобальном контроллере, использует ли пользователь мобильный или настольный клиент
  • Загрузите контроллеры в зависимости от версии клиента (controller_default.php / controller_mobile.php)
  • Сделайте все специфические для клиента вещи дважды
  • Представления можно хранить в разных папках

Примечание: (a) становится беспорядочным, если ваше приложение растет со временем.

Решение (b):

  • Изменить index.php для загрузки различных папок приложения в зависимости от используемого клиента
  • Хранить модели/конфиги/либы в общей папке

Любое из вышеперечисленных решений требует (обширной?) модификации CI-фреймворка. Постарайтесь сделать как можно больше, перезаписав существующие классы (MY_Controller и т.д.), чтобы иметь возможность обновить их в более позднее время.

1
ответ дан 2 December 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: