Мобильная версия моего проекта Symfony - PullRequest
0 голосов
/ 31 марта 2011

Я создаю мобильную версию в проекте Symfony и использую методику, описанную здесь: http://symfony.com/blog/how-to-create-an-optimized-version-of-your-website-for-the-iphone-in-symfony-1-1

Пока это работает, но у меня есть одна проблема: большинство моих стандартных страниц прекраснодействительно для просмотра с мобильного телефона, но symfony заставляет меня создавать шаблоны * Success.mobile.php ... Я бы хотел, чтобы symfony использовал обычный шаблон, если он не находит .mobile.php.Это возможно?Как бы вы решили это?

1 Ответ

5 голосов
/ 01 апреля 2011

Перед рендерингом необходимо проверить, существует ли этот шаблон, а если нет, установить шаблон по умолчанию. Это можно сделать, добавив фильтр, который проверяет это. Итак ...

Добавьте этот фильтр в папку lib /, например /lib/filters/ViewFilter.class.php

.
<!-- /lib/filters/ViewFilter.class.php -->
class ViewFilter extends sfFilter{
    public function execute($filterChain){
        if ($this->isFirstCall()){
            //get context
            $context = $this->getContext();
            //get module name
            $module = $context->getModuleName();
            //get action name
            $action = $context->getActionName();

            //get template file name for this request
            $templateFile = $action . "Success.mobile.php";
            //set physical path of that template
            $path = sfConfig::get('sf_app_module_dir').DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR. $templateFile;
            //check if exists
            if(!file_exists($path))
                //if is not, set html format to render the {$action}Success.php
                $context->getRequest()->setRequestFormat('html');

        }

        $filterChain->execute();
    }
}

Затем добавьте в ваши filters.yml

<!-- /apps/frontend/config/filters.yml -->
rendering: ~
security:  ~

# insert your own filters here
ViewFilter:
 class: ViewFilter

cache:     ~
execution: ~

и должен работать :) Если вы не знаете, что такое фильтр и что он делает, обратитесь к Руководству по фильтрам Symfony , чтобы начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...