2011-05-29 4 views
1

quoi de mieux pour respecter le MVC?quoi de mieux pour respecter le MVC?

faire une vue avec une boucle comme ceci:

<?php foreach($posts as $post){ 
      echo '<div class="post">'.$post.'</div>'; 
     } 
?> 

où les postes $ tiennent tout le corps du poste.

ou dans le controleur faire quelque chose comme ceci:

<?php foreach($posts as $post){ 
      $html = $html + '<div class="post">'.$post.'</div>'; 
     } 
?> 

passent alors le html $ à la vue et les afficher.

+0

Si vous suiviez correctement le paradigme MVC, la vue serait une page html statique prédéfinie, le contrôleur serait tout-javascript et récupèrerait et remplirait les éléments DOM en envoyant des requêtes ajax au modèle (= script php). – mario

+0

@kentverger, j'ai l'impression que vous confondez des vues avec des modèles là-bas. C'est pourquoi vous vous retrouvez avec cette confusion, parce que vous n'avez pas où mettre la logique de l'interface utilisateur. –

Répondre

4

Une logique simple telle que les boucles sont acceptables dans les vues, vous ne voulez pas de logique métier là-dedans. Puisque la logique de cette boucle est à des fins d'affichage, j'utiliserais le premier.

Généralement dans les fichiers modèles, la syntaxe foreach: endforeach est utilisée.

<?php foreach($posts as $post):?> 
    <div class="post"><?php echo $post;?></div> 
<?php endforeach;?> 

Ou si des balises courtes sont activées (S'il vous plaît noter que ceci est souvent désactivé sur les serveurs de production, mais < php ne peut pas être désactivé, donc je vous recommande la méthode ci-dessus?):

<? foreach($posts as $post):?> 
    <div class="post"><?=$post?></div> 
<? endforeach;?> 

Cependant, il s'agit d'une convention par opposition à une règle.

+0

beaucoup, je vais utiliser le premier – kentverger

1

Le premier. Le contrôleur ne devrait jamais s'impliquer dans la présentation. Si vous avez trop de logique dans une vue, déplacez-la dans un viewhelper/component/widget.

+0

ok, je viens d'avoir cette petite question, dans certains où j'entends que le contrôleur doit contrôler ¬¬ toutes les choses dans la vue. Merci beaucoup – kentverger

+0

@blockhead, alors que je suis d'accord avec votre diagnostic, le traitement est un peu faux. La vue n'est pas supposée être un modèle bête (contrairement à ce que les frameworks de prototypage rapide ont popularisé). Aussi ... désolé de ressusciter un ancien poste. –

Questions connexes