Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je me posais une question d'un point de vue conception, intégration...
Comment mettre en place proprement et de manière optimisée des modules du type "Dernières news", sur la page d'accueil de son appli ZF ?
Plusieurs solutions
1) Je pensais en premier lieu créer dans le controleur News une action getLastNewsAction().
Puis dans le fichier index.phtml (associé à IndexController et l'action indexAction() ), placer un :
<div id="lastnews"> <?= $this->action(array('controller' => 'news', 'action' => 'getlastnews')); ?> </div>
Mais j'ai lu quelquepart que l'action helper "action" était deconseillé car assez gourmande en ressources. Et comme j'aurai une 10aine de module comme ça à afficher en page d'accueil, j'ai pas envie que cette dernière mette 10 ans à charger
2) Sinon, dans IndexController > indexAction(), instancier le modele Model_News, appeler sa méthode Model_News::getlastnews() et stocker le résultat dans une variable de vue $this->view->news.
Puis dans index.phtml, appeler une partialLoop('lastnews.phtml', $this->news).
Le problème, c'est que la balise englobante <div> ou <table> ou autre, doit être écrite avant la partialLoop, et donc en dur.
3) ... d'autres solutions ?
Comment vous y prenez vous ?
Je prends tous les témoignages !
Merci.
Hors ligne
Je ferais une aide de vue moi, si ton modèle est bien écrit, c'est fait en 3 lignes
Hors ligne
nORKy a écrit:
Je ferais une aide de vue moi, si ton modèle est bien écrit, c'est fait en 3 lignes
Peux tu préciser ?
Si je te comprends, tu créerais une aide dans views/helpers, mettons LastNews.php, qui s'occupera uniquement de la mise en forme.
Tu transmets les données dans une variable de vue :
$this->view->news = $model->getLastNews();
Puis dans le template :
$this->LastNews( $this->news );
C'est ça ? Dans ce cas, où placer la boucle foreach ?
Merci
Hors ligne
Pas d'avis à donner sur ce sujet ?
Hors ligne
A toi de le faire comme tu le sens.
Moi, je ferais une aide de vue qui peut prendre un tableau d'options (par exemple, si tu veux changé le nombre de news, ou l'ordre d'affichage, classé par date/thème, ...).
Et elle retourne le résultat complet en html. Ta boucle, est elle dans l'aide de vue. Une aide de vue, c'est fait pour généré du HTML.
Hors ligne
Ok, c'est ce que je voulais savoir, la boucle se situe donc dans l'aide de vue et cette dernière génère le résultat complet en HTML, je me demandais juste si dans la pratique il était "autorisé" de faire ça dans un helper.
Merci pour ton avis !
Hors ligne
C'est une très bonne pratique
La doc officielle parle même de cette façon de faire pour gagner en performance :
C.5.3.2. Favor helpers that query the model over action()
In most cases, using action() is simply overkill. If you have most business logic nested in your models and are simply querying the model and passing the results to a view script, it will typically be faster and cleaner to simply write a view helper that pulls the model, queries it, and does something with that information.
Hors ligne
Pages: 1