Construire un nom de variable à la volé avec eval et cat [PHP][SMARTY] - PHP - Programmation
Marsh Posté le 24-09-2008 à 10:15:59
bilbot a écrit : Si vous avez un avis sur la question, je suis preneur. |
J'ai lu en diagonale, mais mon avis est que tu dois pouvoir remplacer ces horreurs par des tableaux.
Marsh Posté le 24-09-2008 à 10:27:40
oui toutes les infos sont stockées dans des tableaux, d'ailleurs la syntaxe smarty le montre bien
Marsh Posté le 24-09-2008 à 10:34:28
Tu ne vas pas assez loin dans ce sens. Construire le nom des champs de manière dynamique comme tu le fais est un mauvais choix.
Arrange-toi pour pouvoir écrire quelque chose de ce genre :
Code :
|
Marsh Posté le 24-09-2008 à 10:46:48
effectivement c'est une solution plus simple et qui marche.
Merci de ton aide. Par conte eval ne fonctionne pas pour des chaines de caractères construite dans le template, c'est bien dommage.
Marsh Posté le 24-09-2008 à 11:23:52
bilbot a écrit : effectivement c'est une solution plus simple et qui marche. |
eval ne devrait jamais être utilisé. Il ne m'est arrivé qu'une fois de ne pas pouvoir le remplacer par autre chose de plus propre.
Marsh Posté le 24-09-2008 à 11:39:10
ok mais pourquoi ils ont foutu cette fonction si ca ne devrait jamais etre utilisé ?
Sinon trainoo tu l'as developpé avec smarty ? t'as utilisé un framework ?
Marsh Posté le 24-09-2008 à 11:45:29
bilbot a écrit : ok mais pourquoi ils ont foutu cette fonction si ca ne devrait jamais etre utilisé ? |
php est plein de conneries qu'il vaut mieux éviter d'utiliser si on veut garder du code propre et une certaine santé mentale.
bilbot a écrit : Sinon trainoo tu l'as developpé avec smarty ? t'as utilisé un framework ? |
Trainoo c'est pas moi, et c'est du java.
Personnellement oui, je travaille avec smarty, mais sans framework.
Marsh Posté le 24-09-2008 à 09:15:03
Bonjour a tous ,
Je vous soumets un petit problème que je rencontre avec smarty. Pour résumer la fonctionnalité de la page, elle est composée d'une zone répétée qui affiche des informations sur x article, mais il y a également de la saisie (pour chaque article zone de saisie texte, radio bouton...) . Ces articles sont repéré par un id, a l'affichage c'est cet id qui me permet de construire le nom de mon champ pour le récupérer dans mon post :
lorsque l'utilisateur valide les données, coté serveur je vérifie que les saisies sont correcte si c'est ok j'enregistre en base sinon je raffiche la même page avec les données précédemment saisies et c'est cette partie qui me pose problème. je construis le nom de la variable qui contient mon texte et après j'utilise le résultat dans la fonction eval pour afficher le texte proprement dit mais ça ne marche pas :
-> j'arrive bien a assigner ''$erreur.avis_1" à ma variable smarty $texte pour l'id valant 1
toutes les données sont sotckées dans le tableau associatif de la manière suivante : erreur['avis_1'] = "mon texte que je veux afficher" ou erreur['radio_1']= 'A' (dans ce cas ci j'ai des données pour l'article avec id=1 : un radio et une zone texte)
par contre ici je n'arrive pas a éxectuer le code contenu dans la variable $texte, en fait dans ma zone texte, ca m'affiche : ''$erreur.avis_1" j'ai l'impression que la fonction eval est tout simplement ignorée.
N'étant pas expert smarty, j ne sais pas si je fais une faute dans mon raisonnement ou si ce n'est tout simplement pas possible a réaliser... pourtant l'exemple ici en fin de page : http://smarty.net/manual/fr/language.function.eval.php , me laisse penser que si
Si vous avez un avis sur la question, je suis preneur.
Message édité par bilbot le 24-09-2008 à 10:36:21