2010-05-27 2 views
13

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

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

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

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

ответ

4

Если вам действительно нужно 2 независима приложение, вы можете установить это с Juste один или два основных CodeIgniter модификации, в зависимости, если вы используете PHP4 или 5.

Мы сделали это после этого CI's wiki page и это работает отлично, мы разделяем модели, библиотеки, конфигурацию. В принципе вы получили проектную организацию, как это:

/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/конфигурация присутствует для общих классов или отдельных приложений). Также вы можете перемещать весь распространенный код (контроллеры, определенный класс маршрутизации и т. Д.) И сохранять только приложения в своих приложениях.

В итоге у вас есть два фронтальных контроллера (в основном идентичны файлу index.php) по одному для каждого приложения, и вы можете фильтровать посетителей с переписыванием URL, конкретным субдоменом и т. Д.

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

Другой жизнеспособной альтернативой, но Я еще не использовал его, использует HMVC organisation

+0

Отлично! звучит так же, как я хочу, спасибо. Однако я понятия не имею, как загрузить модель из «общего» в один из контроллеров в папках «frontend» или «backend». Как это делается? – KeyStroke

+0

Я думал об этом прошлой ночью, это недостающая точка в моем ответе, вам нужно переоценить класс CI_Loader, поэтому ti будет искать модель/помощники/библиотеки/конфиг в пути Common path before App. В нашей настройке константа APPPATH изменяется в переднем контроллере, и мы добавили COMMONPATH таким же образом. – Benoit

+0

Спасибо. Один последний маленький бит: как бы вы порекомендовали переключиться между приложениями, если они должны использовать одни и те же URL-адреса? используя обнаружение агента в index.php, а затем установив файл cookie? или по-другому? – KeyStroke

1

Решение (а):

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

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

Решение (б):

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

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

+0

Возможно, я предпочитаю решение b для среднего и крупного сайта (скажем, более 10 методов управления). На самом деле это требует изменения структуры, но они очень ограничены, если вы перегружаете основные классы CI. – Benoit

Смежные вопросы