#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 🙂