Zend Framework: как мне использовать MVC для нашего мобильного веб-сайта

#model-view-controller #zend-framework #design-patterns

#model-view-controller #zend-framework #шаблоны проектирования

Вопрос:

Хорошо, итак, я оформляю онлайн-заказ, это модуль, который я назвал ‘olo’. Что мне нужно сейчас, так это создать мобильную версию нашего веб-сайта, с совершенно другим макетом и дизайном.

Теперь, как мне использовать возможности MVC, которые меня продали, как только я начал?

Я хочу использовать все различные классы контроллеров, которые я уже создал в модуле OLO.

Прямо сейчас я начал разработку нашего мобильного веб-сайта, он размещен в виде другого модуля под названием «мобильный». Он собран с помощью jQuery Mobile, и я уже многое сделал; информационные страницы, контактная форма и т.д.

В настоящее время все мобильные устройства перенаправляются на domain.tld/m с помощью.htacces mobile dectection. Это сделано для поддержки полного просмотра веб-сайта, если на него есть ссылка из мобильной версии.

Ответ №1:

С Zend Framework 1.11 zend представила адаптер wurfl, основанный на Zend_Http_UserAgent.

Это позволяет вам определять мобильные устройства и загружать различные макеты. На YouTube есть РУКОВОДСТВО по использованию, которое появилось вместе с информационным бюллетенем zend за декабрь 2010 года: http://www.youtube.com/watch?v=_A8yg73tqOY

Вам не обязательно использовать разные модули! Просто разные файлы макета!

Комментарии:

1. Насколько я понимаю, ваш путь — это тот, по которому нужно идти. Если я хотел бы предоставить мобильным пользователям ссылку на наш немобильный веб-сайт, можно ли это сделать с помощью настройки wurfl?

2. Да, вы могли бы предоставить простую ссылку где-нибудь в нижнем колонтитуле, возможно, которая устанавливает флаг с использованием реестра zend и проверяет этот флаг при проверке мобильных устройств, dotkernel.com/dotkernel/disable-automatic-wurfl-redirect

3. Приятно, это очень интересно. Я не уверен, буду ли я использовать его прямо сейчас, я думаю, потребуется немного переписать существующий код. И мне нужно начать это сейчас, руководителям компаний всегда нужно, чтобы все было сделано вчера — вы знаете 🙂

4. Для расширенного переключения вида / макета, такого как помощник contextSwitch action, я написал короткую статью об этом с помощью WURFL: juriansluiman.nl/en/article/111 /…

Ответ №2:

Лично я бы использовал плагин front controller. Выполнение этого внутри bootstrap, на мой взгляд, является слишком ранним шагом в процессе.

Напишите плагин, который перехватывает preDispatch () и использует Zend_Http_UserAgent, чтобы определить, осуществляется ли доступ к приложению через мобильное устройство. Затем вы можете указать путь к сценарию просмотра в другой каталог. Например, допустим, что по умолчанию используется ваш текущий каталог просмотра, mobile — ваш новый каталог просмотра. Вы просто клонируете структуру и изменяете файлы, и это должно сработать 🙂

 application/
  modules/
    olo/
      controllers/
      modules/
      views/
         scripts/
           default/
           mobile/
  

Комментарии:

1. Хорошо, возможно, мне следовало упомянуть об этом, но у меня есть .htaccess mobile detection , который перенаправляет все мобильные устройства на domain.tld/m и routes.ini-файл, который обрабатывает /m и все вложенные пути. Но ваш комментарий о различных каталогах в каталоге scripts, вероятно, полезен.

2. Вы также можете сопоставить это с помощью маршрутизатора (не помню, каким точным методом, обновлю ответ завтра). Таким образом, все ваши контроллеры и модели останутся прежними, и, как заявил ArtWorkAD, будут изменены только макеты. Также взгляните на его совет, использование wurfl тоже было бы неплохо. В будущем у вас будет меньше проблем, поскольку вам не придется дважды обновлять обычную версию и версию для мобильных устройств, потому что логика остается прежней 🙂

3. Я принял ответ @ArtWorkAD, но ваш ответ также был очень полезен — имейте представителя som 🙂

Ответ №3:

Как и сказал ArtWorkAD, вы можете использовать в Zend Framework 1.11 адаптер wurfl, который позволяет вам обнаруживать user agent и переключать макет, но это означает, что каждый из ваших представлений должен быть «универсальным». До сих пор я никогда не просматривал так «универсально».

Что вы можете использовать, так это контекстное переключение представления http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

Это позволяет создавать другой контекст, обычно используется для создания файла csv / xml. Допустим, у вас есть контроллер с именем Index с действием FooAction (), я предполагаю, что у вас уже есть view scripts / index / foo.phtml

Вы можете создать контекст под названием «mobile», который позволит вам создать представление для этого контекста, например, scripts/index/foo.mobile.phtml . Это похоже на изменение макета, но для представления и с предыдущим адаптером wurfl вы могли изменить макет и автоматически переключить контекст.

Комментарии:

1.Я принял ответ @ArtWorkAD, но ваш ответ также был очень полезен — имейте представителя som 🙂