Je suis nouveau à MVC. Vous avez été averti ...MVC: une vue peut-elle faire une boucle sur les résultats de la requête?
J'ai un modèle utilisateur qui peut renvoyer une ressource de résultat MySQL à un contrôleur. Le contrôleur passe la ressource MySQL à la vue à afficher. Est-il acceptable d'imprimer les résultats de la requête dans la vue, en utilisant une fonction de récupération des résultats de la base de données?
<?php while($row = some_fetching_function($database_result_resource): ?>
<tr>
<td><?=$row['Username']?></td>
...etc
</tr>
<?php endwhile; ?>
Cela ne me semble pas correct. C'est étroitement couplé, n'est-ce pas? Le modèle doit renvoyer un type de ressource de base de données et la vue doit être parcourue en boucle à l'aide d'un certain type de méthode de récupération de base de données. Est-ce que cela peut être découplé sans boucler deux fois les résultats? Je pense que vous devrez parcourir les résultats dans le modèle pour créer un tableau des résultats, puis de nouveau dans la vue.
En résumé:
- la vue peut afficher une ressource de résultat de base de données, tout en respectant le modèle de conception MVC?
- Est-il possible d'éviter de faire deux boucles dans les données, tout en évitant un couplage étroit à une base de données?
Ceci n'évite pas l'exigence 2 dans OP. Vous pouvez faire ce qu'il demande avec un wrapper de classe qui implémente l'interface Iterator. – Martin
"Effectuez la récupération dans votre contrôleur, placez-le dans un tableau et transmettez-le à votre vue." Je suis confus, Daff - le chargement ne devrait-il pas être fait dans le modèle, pas dans le contrôleur? –
Hm ok ce n'était pas la meilleure façon de le décrire. Je suppose que cela dépend aussi de l'architecture. Ce que je voulais dire, c'est que l'affectation des données du modèle à la vue devrait se faire dans le contrôleur, pas dans la vue (au moins dans la plupart des frameworks PHP basés sur la requête/réponse avec lesquels j'ai travaillé). – Daff