Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

insérer une variable smarty dans une variable smarty !

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French
View previous topic :: View next topic  
Author Message
Steeven AOUATE
Smarty n00b


Joined: 10 Sep 2009
Posts: 2

PostPosted: Thu Sep 10, 2009 2:34 am    Post subject: insérer une variable smarty dans une variable smarty ! Reply with quote

Bonsoir à vous tous.

Je vous explique mon problème car je ne trouve aucune solution sur le site de smarty ni sur notre ami "Google".

Voila, je développe actuellement une application web dynamique ou chaque contenu se trouve en base de donnée. Jusque l'à aucun souci sauf si en base de donnée se trouve un formulaire dans lequel j'insère d'autres variables smarty. Celles ci ne sont pas prisent en compte et son affichées comme du texte brut !

Quelqu'un aurait-il une idée pour m'aider à résoudre mon problème ?

En faite la véritable question est comment insérer une variable smarty dans une autre variable smarty.

Prenons l'exemple suivant :

Code PHP :

Code:
$smarty->assign('myAge', 42);
$smarty->assign('plop', 'je vais sur mes {$myAge} ans');


Code HTML :

Code:
<h3>{$plop}</h3>


Se code affichera :

je vais sur mes {$myAge} ans alors que je voudrais que cela affiche :
je vais sur mes 42 ans.

Si vous avez une solution ou quelques idées qui pourront me faire avancer, je vous serais très reconnaissant.

Cordialement.
Back to top
View user's profile Send private message
Gowser
Smarty Pro


Joined: 19 Feb 2008
Posts: 104
Location: Nantes (France)

PostPosted: Thu Sep 10, 2009 2:02 pm    Post subject: Reply with quote

Bonjour,

Cela dépend de l'endroit où vous faites la concaténation :

Si c'est dans du code PHP :

Code:

$smarty->assign('myAge', 42);
$smarty->assign('plop', 'Je vais sur mes '.$smarty->get_template_vars('myAge').' ans');


Si c'est dans un tpl :

Code:

{assign var='myAge' value='42'}
{assign var='plop' value='Je vais sur mes '|cat:$myAge|cat:' ans'}


Voilou, ++
Back to top
View user's profile Send private message Send e-mail
Steeven AOUATE
Smarty n00b


Joined: 10 Sep 2009
Posts: 2

PostPosted: Thu Sep 10, 2009 4:33 pm    Post subject: Reply with quote

Salut, en faite je pense que c'est un peu plus compliqué que ça : je m'explique :

En base de donnée j'ai tout le formulaire html avec toutes mes variable Smarty assigné depuis php.
Pour Afficher le formulaire je fais un {foreach} du style

{foreach item=content from=$content}

<div class="MainContent">
{$content.BODY_CONTENT}
</div>

{/foreach}

Tout le formulaire se trouve dans la variable $content.BODY_CONTENT et dans cette variable se trouve également toutes les variables smarty liées au formulaire. Seul problème, elles se sont pas considérées comme telle !

As tu une autre idée ?

Il faudrait peut-être faire un parser en PHP qui remplace chaque variable du formulaire par sa valeur assigné mais peut-être qu'il y a une instruction ou une méthode smarty qui gère se problème !!

Merci d'avance
Back to top
View user's profile Send private message
Gowser
Smarty Pro


Joined: 19 Feb 2008
Posts: 104
Location: Nantes (France)

PostPosted: Fri Sep 11, 2009 7:13 am    Post subject: Reply with quote

Donc si je comprends bien , le template est dans une variable initialisée depuis la base de données.

Donc ton problème viendrait que smarty n'analyse pas ta variable pour interpréter le contenu.

Il me semble que la fonction {func} permet de faire une analyse de variables contenu dans une autre variable : http://www.smarty.net/manual/fr/language.syntax.quotes.php

Voilou, j'espère que j'ai pas compris de travers Laughing
Back to top
View user's profile Send private message Send e-mail
reb
Smarty Rookie


Joined: 17 Aug 2005
Posts: 23

PostPosted: Mon Sep 14, 2009 7:29 pm    Post subject: Reply with quote

http://smarty.net/manual/fr/language.function.eval.php
Back to top
View user's profile Send private message
touiks
Smarty n00b


Joined: 04 Aug 2010
Posts: 1

PostPosted: Wed Aug 04, 2010 8:37 am    Post subject: Reply with quote

Bonjour,

Je rebondi sur ce sujet car c'est un peu la même chose.

Je crée une loop pour répéter le même input 5 fois et utiliser son index de façon dynamique.

J'ai déjà assigné un tableau dans une variable $detailsScores.
donc {$detailsScores.set1.eq1} me donne le score de l'equipe 1 à la fin du premier set, {$detailsScores.set2.eq1} celui du 2e set et ainsi de suite.

Voici ce que ça donne

Code:

{section name=score loop=6 start=1 }
      {assign var='index' value=`$smarty.section.score.index`}
   
      <label for="scorerec_set{$index}">{$index}e set : </label>
      <input type="text" id="scorerec_set{$index}" value="{$detailsScores.set{$index}.eq{index}}"  /> -
      ue="{$score2}" class="score" maxlength="2" size="2" /><br />
   {/section}


Logiquement, smarty n'aime pas {$detailsScores.set{$index}.eq{index}}.

Aussi j'essaye de concaténer, mais je n'arrive qu'à obtenir ceci dans le code source.

Code:
<input type="text" id="scorerec_set1" value="$detailsScores.set1.eq1"  />


Comment pourrais-je faire ?

Merci par avance.
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP