2010-08-31 15 views
0

J'ai une procédure de modification pour afficher la "date" d'un événement.Où puis-je définir les fonctions de vue dans CakePHP?

 if($event['Event']['is_multi_day']){ 
     if(date('n',strtotime($event['Event']['start_day'])) == date('n',strtotime($event['Event']['end_day']))) 
      $date = date('j',strtotime($event['Event']['start_day'])).' - '. 
       date('j',strtotime($event['Event']['end_day'])).' '. 
       date('M',strtotime($event['Event']['end_day'])); 
     else 
      $date = date('j',strtotime($event['Event']['start_day'])).' '. 
       date('M',strtotime($event['Event']['start_day'])).' - '. 
       date('j',strtotime($event['Event']['end_day'])).' '. 
       date('M',strtotime($event['Event']['end_day']));  

    }else{ 
     $date = date('j M', strtotime($event['Event']['start_day'])); 
    } 

-je inclure ce bloc de code dans chaque page j'afficher un événement. Comment définir une fonction pour cela, qui peut être appelée à partir de vues que je veux?

Répondre

1

Il me semble que vous allez utiliser ceci dans une boucle qui affiche un certain nombre d'événements et votre code sera loin d'être optimal dans cette situation.

Je pense que vous pouvez réduire cette ligne:

if(date('n',strtotime($event['Event']['start_day'])) == date('n',strtotime($event['Event']['end_day']))) 
) 

à: (. Ou quelque chose de similaire qui compare la valeur stockée sans mise en forme de mise en forme est à des fins d'affichage, pas de comparaison algorithmique)

if($event['Event']['start_day']==$event['Event']['end_day']) 

et ceci:

date('j',strtotime($event['Event']['end_day'])).' '.date('M',strtotime($event['Event']['end_day'])); 

à:

date('j M',strtotime($event['Event']['end_day'])); 

... et modifications similaires ailleurs. S'il s'agit d'une boucle, vous devez réduire le nombre d'appels de fonctions inutiles et éviter la concaténation des chaînes.

Personnellement, comme cela est une fonction d'affichage, je le garde du côté de la vision des choses (par opposition au contrôleur) et je ferais probablement comme un élément avec les paramètres passés - voir http://book.cakephp.org/view/560/Passing-Variables-into-an-Element

0

Si ce sont des données brutes que vous manipulez (comme indiqué) et que vous voulez simplement renvoyer une valeur pour l'affichage, je créerais un composant et le ferais au niveau du contrôleur. Si vous voulez inclure un balisage de présentation et/ou de la logique, alors un élément est probablement ce que vous cherchez.

1

Je voudrais créer un assistant pour cela. Pour moi, c'est plus sensé plutôt qu'un composant. Si vous utilisez ces données uniquement pour l'afficher, je crois que Helper est la solution appropriée. How to build custom helper

Questions connexes