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

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

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

В любом случае, как я мог бы сделать это эффективно?

Ваша помощь очень ценится. :)

Ответы [ 2 ]

4 голосов
/ 27 мая 2010

Если вам действительно нужны 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 Controllers (в основном идентичные файлу index.php), по одному для каждого приложения, и вы можете фильтровать посетителей с помощью перезаписи URL, определенного субдомена и т. Д.

Если вы ориентируетесь на серверы с PHP4, я открыл эту ветку на форумах codeigniter, чтобы посмотреть, что нужно изменить в основных классах, чтобы заставить его работать (без изменений при загрузке)

Еще одна жизнеспособная альтернатива, но я ее еще не использовал, - это HMVC организация

1 голос
/ 27 мая 2010

Решение (а):

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

Примечание: (а) становится грязно, если ваше приложение со временем растет.

Решение (b):

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

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

...