Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-07-2009 11:51:21

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Créer et afficher des modules en page d'accueil (ex Last News, etc...)

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 :

Code:

<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

 

#2 01-07-2009 14:43:33

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

Je ferais une aide de vue moi, si ton modèle est bien écrit, c'est fait en 3 lignes


----
Gruiiik !

Hors ligne

 

#3 01-07-2009 15:14:40

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

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 ? smile

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

 

#4 02-07-2009 14:25:44

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

Pas d'avis à donner sur ce sujet ? smile

Hors ligne

 

#5 02-07-2009 15:35:53

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

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.


----
Gruiiik !

Hors ligne

 

#6 02-07-2009 17:00:50

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

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. smile

Merci pour ton avis !

Hors ligne

 

#7 04-07-2009 10:46:33

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Créer et afficher des modules en page d'accueil (ex Last News, etc...)

C'est une très bonne pratique wink

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.

http://framework.zend.com/manual/fr/per … .view.html

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages