|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
Steeven AOUATE Smarty n00b
Joined: 10 Sep 2009 Posts: 2
|
Posted: Thu Sep 10, 2009 2:34 am Post subject: insérer une variable smarty dans une variable smarty ! |
|
|
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 :
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 |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Thu Sep 10, 2009 2:02 pm Post subject: |
|
|
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 |
|
Steeven AOUATE Smarty n00b
Joined: 10 Sep 2009 Posts: 2
|
Posted: Thu Sep 10, 2009 4:33 pm Post subject: |
|
|
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 |
|
Gowser Smarty Pro
Joined: 19 Feb 2008 Posts: 104 Location: Nantes (France)
|
Posted: Fri Sep 11, 2009 7:13 am Post subject: |
|
|
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 |
|
Back to top |
|
reb Smarty Rookie
Joined: 17 Aug 2005 Posts: 23
|
|
Back to top |
|
touiks Smarty n00b
Joined: 04 Aug 2010 Posts: 1
|
Posted: Wed Aug 04, 2010 8:37 am Post subject: |
|
|
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 |
|
|
|
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
|