2011-03-31 3 views
0

Je crée la version mobile dans un projet symfony et je suis en utilisant la technique décrite ici: http://symfony.com/blog/how-to-create-an-optimized-version-of-your-website-for-the-iphone-in-symfony-1-1La version mobile de mon projet Symfony

Jusqu'à présent, il travaille, mais j'ai un problème: La plupart de mes pages standard sont parfaitement valides pour naviguer avec un téléphone mobile mais symfony me force à créer les modèles * Success.mobile.php ... Je voudrais que symfony utilise le template normal s'il ne trouve pas le .mobile.php. Est-ce possible? Comment le résoudriez-vous?

Répondre

5

Vous devez vérifier avant le rendu si ce modèle existe, et si ce n'est pas le cas, définissez le modèle par défaut. Cela peut être fait en ajoutant un filtre qui vérifie cela. Alors ...

Ajouter ce filtre à un lib/dossier, par exemple /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(); 
    } 
} 

Ensuite, ajoutez à votre filters.yml

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

# insert your own filters here 
ViewFilter: 
class: ViewFilter 

cache:  ~ 
execution: ~ 

Et devrait fonctionner :) Si vous ne savez pas ce qu'est un filtre et ce qu'il fait s'il vous plaît se référer à Symfony's Filters Guide pour vous aider à démarrer.

+0

Je pensais ajouter du code à l'action; c'est tellement mieux! – Nathan

+0

Cela semble bon. Je vais vérifier plus tard si cela fonctionne :) – miguelSantirso

+0

Cela a-t-il fonctionné pour vous? – Pabloks

Questions connexes