Мобильный веб-сайт и настольный веб-сайт: нужно ли дублировать мой код?
У меня есть веб-сайт, созданный с помощью Symfony2, и я хотел бы создать его мобильную версию с использованием jQuery mobile (в настоящее время я использую загрузчик Twitter для настольной версии).
Я действительно смущен решением, которое я должен выбрать:
создайте поддомен, например: http://mobile.mywebsite.com/ и создайте другой проект Symfony, который будет очень похож, но только с другими файлами html.twig (для интеграции с мобильным jQuery), но это означает, что я буду дублировать большой часть моего кода?
Медиа-запросы внутри моего проекта Symfony в HTML-файлы для использования мобильных элементов JQuery в соответствии с размером экрана. Таким образом, у меня будет только один проект для поддержки.
Любой совет будет полезен! Спасибо!
3 ответа
Вы можете сделать маршрутизацию на основе доменного имени:
http://symfony.com/doc/master/components/routing/hostname_pattern.html
При этом вы можете иметь различные контроллеры для мобильного сайта, но все равно повторно использовать вашу модель и (по крайней мере, некоторые из них) свой вид. Вы даже можете повторно использовать некоторые контроллеры, установив параметр (на основе хоста) в маршрутизации, а затем используя его в контроллерах:
# routing.yml
mobile_homepage:
path: /
host: m.{domain}
defaults: { _controller: AcmeDemoBundle:Main:homepage, mobileVersion: true }
requirements:
domain: %domain%
homepage:
path: /
defaults: { _controller: AcmeDemoBundle:Main:homepage }
Тогда в вашем контроллере:
// Acme/DemoBundle/Controller/MainController.php
public function homepageAction($mobileVersion = false) {
...
if ($mobileVersion) {
// do some mobile things, perhaps return a specific template
} else {
// do some non-mobile things, perhaps return a specific template
}
...
}
Рекомендуется создать одну страницу с адаптивным дизайном (медиа-запросы являются частью этого), который можно адаптировать к любому размеру экрана.
Вам определенно не следует делать второй проект Symfony. По сути, вы пытаетесь создать 2 разных макета для своего сайта, чтобы они влияли только на ваш вид. Если вы не хотите использовать адаптивный дизайн, вы можете создавать шаблоны веток для своих мобильных страниц и загружать их с тех же контроллеров, которые вы используете для сайта рабочего стола.
Я знаю, что уже немного поздно, но все же это может быть полезно для других.
У меня был тот же вопрос этим утром, и Google дал мне MobileDetectBundle https://github.com/suncat2000/MobileDetectBundle/ который, кажется, решил эту проблему. Пока не пробовал, но обязательно буду!