Smarty - variables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Smarty - variables

par lux » 27 avr. 2008, 11:25

Ha oui tiens ça marche :P

Par contre la doc, la lire, je fais que ça, mais j'ai du zapper ce passage.
par la en tout cas ça parle pas de ça ?

:oops: :oops:

par Sékiltoyai » 27 avr. 2008, 11:20

Si, suffit de faire :

Code : Tout sélectionner

{assign var="cat_`$lang.short`"}
Faut lire la doc hein :)

par lux » 27 avr. 2008, 11:02

Finalement après avoir un peu réfléchi, et que mon problème est un peu plus complexe, je vais faire court pour expliquer la ou ça coinçait, finalement j'ai pu garder ma structure en changeant deux trois trucs.

En fait dans ma BDD j'ai deux champs, cat_fr et cat_uk. Donc dans mon foreach, je dois faire un appel cat_fr et cat_uk, et ça pour chaque tour de boucle pour afficher les 2 langues (dans l'admin).
Donc pour chaque ligne d'une catégorie je fais une boucle sur un array contenant 'fr' et 'uk' (ici la première ligne avec le $lang.short :
{assign var='lang_cat' value=$lang.short}
{assign var='cat' value=cat_$lang_cat}
Et ensuite j'assigne devant le 'cat_', et je peux ainsi utiliser la variable 'cat' que j'ai ainsi crée pour appeller la bonne valeur dans la boucle.

Si vous avez rien compris c'est pas grave en tout cas ça marche :P

Le problème venait du fait qu'on peut pas faire de suite :
{assign var='cat' value=cat_$lang.short}
smarty aime pas trop ça :oops:

Merci pour les conseils 8-)

par caroube » 27 avr. 2008, 09:27

Tu peux regarder du côté des tableaux à deux dimensions
// ---- fichier PHP -----
$cats = array (0=>array ("fr"=>"catégorie 0", "uk"=>"category 0"),
			   1=>array ("fr"=>"catégorie 1", "uk"=>"category 1")
		);
$smarty->assign("lang", "uk");
$smarty->assign("cats", $cats);
// ---- fichier template -----
<h3>{$lang}</h3>
<h4>Avec section</h4>
{section loop=$cats name=i}
  <li>{$cats[i][$lang]}</li>
{/section}
<h4>Avec foreach</h4>
{foreach from=$cats item=cat}
  <li>{$cat[$lang]}</li>
{/foreach}

par Sékiltoyai » 26 avr. 2008, 18:30

Tu peux essayer de faire une fonction pour te le faire, après je n'ai plus trop de restes concernant Smarty, cela fait déjà longtemps que j'ai abandonné, mais je ne vois rien d'autre…
Essaye peut être aussi pour tester $data.$cat en ayant assigné la bonne valeur à $cat…

Smarty - variables

par lux » 26 avr. 2008, 15:28

Hello tout le monde.
J'ai une question, et j'aurais besoin d'un spécialiste smarty :P

Alors j'ai qqch comme :
{foreach from=$array_cat item=data}
<li>{$data.cat_fr}</li>
{/foreach}
Voila, alors, j'aimerais que le fr soit dynamique, c'est soit un fr,uk,de en fonction de la langue chargée. J'ai bien sur une variable $lang qui contient le bon uk,fr ou de.
Je pensais faire
{$data.cat_$lang}
Mais ça ne marche pas, et j'ai aussi essayé différentes sans trop de succès. La doc de smarty n'en parle pas (ou j'ai zappé un truc), et leur forum, pour y trouver un truc, faut se lever tot :roll:

Une idée ? Merci d'avance :wink: