|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() alfaiate olivierInscription : décembre 2011 Messages : 5 ![]() |
Bonjour à tous,
Je travaille actuellement sur un site que je dois remettre à niveau, et qui est basé sur Smarty, mais j'ai un problème pour récupérer des données dans une boucle forEach en php (pas dans le tpl mais dans le module qui récupère les données de la classe correspondante). Je cherche à créer une galerie photos avec albums, le nom des albums sont stockés dans la bd, et je récupère la liste des photos grâce à la fonction Glob. Mais mon forEach n'affiche que le dernier enregistrement de ma table albums. C'est sûrement un problème d'indexation, mais je n'arrive pas à m'en sortir, je suis un peu largué... Donc : j'ai une classe "Photos" photos.class.php qui récupère le nom des albums photos dans la base de données sql, que voici : Code :
J'ai ensuite un module fo_medias.php où la classe est appelée et qui gère les données qui seront envoyées au template, dans ce module j'ai : Code :
et enfin j'affiche le tout dans mon tpl medias.tpl : Code :
![]() ma liste d'albums est ok, par contre ça ne récupère que les photos qui correspondent au dernier dossier, l'erreur vient je pense de mon forEach dans le modules fo_media.php, et pas du tpl, mais je ne m'en dépatouille pas... Si quelqu'un pouvait me dire où ça coince, ça serait génial !! Merci d'avance pour votre aide. Olivier |
||||||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Bonjour,
Oui c'est ton foreach qui déconne je pense. Code :
Code :
L'idéal est de bien préparer la structure des données en PHP pour les consommer facilement dans le template. Enfin pour savoir quelles sont les données dispos dans le TPL, il te suffit d'écrire {debug} n'importe où dans le template. Bonne soirée.
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
||||
|
00
|
|
|
#3 | |
|
Invité de passage
![]() alfaiate olivierInscription : décembre 2011 Messages : 5 ![]() |
Merci Eric,
j'ai retiré les fonctions glob de mon foreach, par contre je n'arrive toujours pas à sortir la liste des images correspondant aux dossiers de ma table "albums". Citation:
Bref je bloque complètement, je crois bien avoir compris la logique, mais pas la pratique... Pour chaque nom d'albums je dois créer le chemin correspondant pour que la fonction glob sache où aller chercher les images, donc dans ma logique je dois créer une boucle pour afficher le chemin de chaque dossier. Bon je suis certainement pas loin de trouver une solution, mais j'avoue qu'un petit coup de pouce me ferait bien avancer, car j'ai l'impression de tourner en rond depuis cet après midi, et franchement je crois que là mon niveau est confronté à ses limites, d'autant que c'est la première fois que je travaille en "profondeur" sur un site géré par Smarty, j'ai bien un peu trafiquoté sur du prestashop, mais cela restait très succins... Sur ce je crois que j'ai besoin d'une bonne nuit de sommeil !! Encore merci de vous attarder sur mon problème et bonne nuit (et à demain j'espère... |
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Code :
mais si j'enlève ce bout de code, comment la fonction glob va savoir où aller chercher la liste des images, à moins de la mettre (la fonction glob) directement dans le template entre des balises {php}{/php}, là du coup je pourrais récupérer la valeur de chaque dossier et boucler pour afficher les images correspondantes, mais je perd l'intérêt de la logique smarty dans ce cas là ?
Effectivement tes fonction glob sont nécéssaires mais quand tu écris ça : Code :
Ta classe photo devrait prendre en charge la gestion des vignettes associées. Cela faciliterait la récupération dans le TPL. La solution est donc du ressort de PHP. Voilà à toi de jouer.
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
||
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() alfaiate olivierInscription : décembre 2011 Messages : 5 ![]() |
Bon je laisse tomber, j'y arrive pas, j'ai essayé de gérer l'appel de mes vignettes dans ma classe comme tu me l'as conseillé, et j'arrive à récupérer le chemin de chaque dossier dans mon tpl, mais je ne parviens plus à scanner la liste des images avec la fonction glob en fonction du chemin.
Je m'y prend sûrement pas de la bonne façon et je finis par m'embrouiller et ne ne pas avancer, ça me décourage!! Tout ce que j'ai réussi à faire c'est créer des fonctions pour renvoyer le chemin des dossiers ( getThumbsUrl() et getLargeUrl() ), mais c'est tout... Code :
Donc pour l'instant, le client n'aura pas de galerie avec albums (dommage car côté back-office c'est opérationnel), mais juste une galerie simple avec une liste d'images. Smarty est encore trop obscure pour moi, j'ai pas forcement assimilé la logique. Le site sur lequel je travaille n'a pas été crée par moi, et même si j'ai réussi avec succès à modifier les templates et à créer de nouvelles fonctionnalités malgré Smarty, là je câle !!! Encore merci Eric d'avoir pris le temps de regarder mon problème, si tu as une solution directe je suis évidement preneur (mais je comprend bien que pédagogiquement il serait plus instructif de trouver la solution par moi même, mais malgré tes conseils et orientations, je n'y arrive pas...et le site sera en ligne demain soir). Bon à la base je devais uniquement faire une simple galerie pour mon client, donc le contrat est tout de même remplis... Cordialement Olivier |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Je ne peux pas te donner de solution toute faite.
Tout ce que je peux dire c'est que ton TPL doit consommer les données des photos le plus simplement possible. Pour chaque item ($entry dans ton template) tu dois avoir une liste des thumbnails qui correspondent. Il faut donc que, pour chaque objet photo, une méthode te retourne les thumbnails pour que dans le TPL tu puisses imbriquer les foreach. Avant de regarder du côté de Smarty je te conseille de voir si tes données sont bien là en PHP (var_dump). Une fois que tu as bien "tes petits" en PHP tu peux te concentrer sur le TPL. Bonne soirée et bonnes fêtes.
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() ![]() |
Bonsoir,
j'ai repris ta classe Photos en la modifiant. Tu peux essayer avec ceci : Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#8 | ||||||||
|
Invité de passage
![]() alfaiate olivierInscription : décembre 2011 Messages : 5 ![]() |
bon j'insiste un peu quand même...
dans ma classe Photos j'ai ajouté 2 fonctions : Code :
Dans mon module j'ai rajouté ces lignes : Code :
et dans mon tpl, si je fais ça : Code :
Code :
mais...j'vais y arriver, j'vais y arriver... |
||||||||
|
|
00
|
|
|
#9 | |||
|
Invité de passage
![]() alfaiate olivierInscription : décembre 2011 Messages : 5 ![]() |
Citation:
Pourrais tu regarder mon message précédent, car j'ai un peu avancé, avant que je me penche sur ta solution ? |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com