|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Bonjour,
Je m'initie à SMARTY, suite au cours de Eric Pommereau, mais habitué à du MVC simpliste, j'ai un peu de mal à m'adapter. J'aimerai vos conseils Voici, en simplifié et brevement, ce que j'ai: MODELE: Code :
CONTROLEUR: Code :
Alors voilà, maintenant pour migrer tout en SMARTY, et ce dans les regles de l'art, je sais pas trop comment faire... en ce qui concerne la liaison entre le modele et le controleur.. Je pense qu'il faut garder le systeme du modele actuel avec l'instanciation d'un Smarty en debut et sa generation en fin, car le rendu final n'est pas le resultat d'un seul methode mais de plusieurs methodes de plusieurs classes, pour une page Web complete. J'ai une vague idée d'un grand fichier template qui inclurai ou non des templates de mes methodes, mais Smarty est encore vague pour moi.. et ce que je vais ecrire maintenant est faux.. Comment font les proffessionnels? MODELE: Code :
Code :
Code :
|
||||||||||
|
|
00
|
|
|
#2 | |||||
|
Membre régulier
![]() Développeur informatique Inscription : octobre 2002 Messages : 79 ![]() |
Bonjour,
Vous avez interverti le code pour le contrôleur et celui du modele. Quand vous dites 'migrer tout en Smarty', il faut bien comprendre que Smarty n'est pas un framework MVC comme le sont CakePHP ou Symphony par exemple, c'est uniquement un moteur de templates. Il ne sert qu'à la génération des vues. Citation:
Code :
Code :
|
|||||
|
|
00
|
|
|
#3 | ||||
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Merci pour ta réponse CiTriX.
Ma phrase incomprehensible, voulait dire que je ne voulai pas me contenter d'un seul rendu de template (par exemple du template affichageSujets.tpl suite à l'execution de afficherLesSujets()). Avec le code donné, je me rend compte que le template result.tpl vient s'ajouter au template affichageSujets.tpl. Au passage, y'a pas moyen d'integrer le afficheSujet.tpl (ou autre template) au centre du result.tpl de maniere generique et non avant? Mais bon au final Smarty, j'aurai pensé qu'il m'aurai moins neccessité de changement dans mon code et j'ai commencé à m'attaquer à la suite et je ne suis pas bien sur de vouloir tout rechanger.. Je me vois obliger de repenser la structure de mes methodes suivante.. car avec Smarty, je ne vois pas bien comment l'integrer.. Si vous avez un peu de temps pour m'eclairer et m'aider à me lancer, je suis preneur mais sinon je tacherai de me debrouiller ou de revenir à ma version sans Smarty. SujetForum.Class.php Code :
Code :
|
||||
|
|
00
|
|
|
#4 | |||||
|
Membre régulier
![]() Développeur informatique Inscription : octobre 2002 Messages : 79 ![]() |
Pas de problème, si je peux aider ...
Citation:
Pour afficher tous les sujets, tu te compliques la vie à vouloir générer toi-même le html et surtout ça enlève tout l'intérêt d'utiliser Smarty : il ne faut pas de html dans le code ! Code :
Code :
|
|||||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Merci encore
De maniere generique car, je ne demande pas d'afficher toujours le meme template. Je recherche quelque chose du genre: ---------------------------------------------------------------------- | affichage fixe (Par ex, données de la connex recup dans un template ) | | | | affichage generique suivant le Get['a']: | | template de formulaire par exemple ou de l'affich du forum | | | | affichage fixe (template de pied de page) | ---------------------------------------------------------------------- Tandis que actuellement j'ai: ---------------------------------------------------------------------- | RIEN | | | | affichage generique suivant le Get['a']: | | template de formulaire par exemple ou de l'affich du forum | | | | affichage fixe (template de pied de page) | ---------------------------------------------------------------------- Je devrai faire un $smarty->display(hautpage.tpl) de mon haut de page avant mon switch, c'est ça ? C'est propre d'empiler les rendus des templates genere par display ? Pour ce sui est d'afficher le forum, si ce n'avait été que afficher les sujets et que afficher les messages, j'aurai pu m'en sortir mais, je cherchais à obtenir le rendu suivant: --------------------------------------- | Sujet A | | Message A-1 | | Message A-2 | | Formulaire Nveau Message Sujet A | | Sujet B | | Message B-1 | | Formulaire Nveau Message Sujet B | | Formulaire Nveau Sujet | ---------------------------------------- C'est l'imbrication des templates que j'ai un peu de mal à bien visualiser.. Pour afficher les formulaires respectifs des Message et des sujets, ça devrai le faire maintenant que j'ai compris l'empilement des displays, mais pour l'imbrication des Sujets et Messages.. ?! Si je regarde sur http://smarty.php.net/manual/fr/lang...on.foreach.php, il faudrai que je remette sujets et messages sous forme de tableau associatif apparement.. Pas une idée plus simple par hazard? :/ EDIT: Je viens de voir un topic sur ce meme sujet d'imbrication Sujet/Message dans ce Forum, j'attend depuis une reponse pour savoir si ce que j'ai fais, (sans boucles imbriquéees) est bon, mais sinon je me tournerai vers ce sujet. |
|
|
00
|
|
|
#6 | ||||
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Bon en utilisant le systeme d'empilement des rendus display(), ça me permet d'adapter assez facilement mes habitudes au fonctionnement de Smarty, mais j'aimerai quand meme savoir si c'est du travail propre ou pas? Quitte à se mettre aux templates, autant le faire bien..
De plus, en faisant de cette maniere, ça m'evite de refaire un tableau associatif et tout le tralala assez fastidieux je trouve. Mais vous allez peut-etre me dire que empiler les display() est plus lourd que de faire un tableau associatifs de mes sujets et messages (comme vu dans un autre topic) ?? En tout cas, ça me donne pour le moment, le code suivant pour l'affichage de mon petit forum: Sujetforum.class.php Code :
Code :
|
||||
|
|
00
|
|
|
#7 | ||||||
|
Membre régulier
![]() Développeur informatique Inscription : octobre 2002 Messages : 79 ![]() |
Citation:
Code :
footer.tpl contient affichage fixe (template de pied de page) Ensuite pour gérer un affichage dépendant de $_GET['a'] il suffit de faire par exemple : Code :
Citation:
|
||||||
|
|
00
|
|
|
#8 | ||
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Ahhhh
Moi qui me croyais sorti d'affaire.. L'empilement des rendus display() fonctionne pourtant bien.. et de temps d'affichage de ma page est du meme ordre que celui de ma version sans Smarty pourtant... 16,32 ou 46ms aleatoirement suivant les accés à la BD je pense. Si je recapitule, dans mon controleur, je declare mon $smarty = new Smarty() en debut et genere son rendu en fin avec le $smarty->display('result.tpl'). en conservant ce fil rouge tout au long du site. Dans mon template result.tpl je fais des includes de templates suivant des if et else. Et donc, depuis mon controleur, je fais la liaison avec mon modele en passant toujours le meme objet $smarty en parametre pour les methodes neccessitant l'affichage!? Par exemple: Code :
(Cette affaire d'empilement de display qui fonctionne bien dans mon cas, reste quand meme tentant à adopter.. |
||
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Bon, en attendant une reponse à mon precedent post, j'ai essayé de me renseigner sur l'empilement de display() et il existe d'autres personnes qui procede ainsi apparement (http://skillexchange.info/blog/index...ur-de-template
et http://www.phpinsider.com/smarty-for...pic.php?t=8951) Il est dit que ce modèle corresponds avec les recommandations d'un moteur de templates, donc ça me conviendrai mieux. Est-ce qu'il y a des personnes sur ce forum qui utilise egalement ce modele? |
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() David IED Web Inscription : octobre 2006 Messages : 58 ![]() |
Pas eu de reponses.. tant pis, je clos le sujet.
J'ai continué avec l'empilement de display mais j'en suis revenu.. L'empilement de display engendre des problemes quand on utilise les Header redirection et faut bidouiller, c'est pas propre. Donc meme si j'aime pas trop la methode de mettre mes données en tableau (4 tableaux associés dans mon cas, arf...), que l'on ressorts ensuite par smarty, c'est le mieux à faire quand meme. Et la lourdeur du systeme disparait avec la mise en cache. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com