Page 1 sur 1

aide sur smarty faire( une boucle)

Posté : 11 oct. 2005, 15:18
par jeff
salut
je vient de choisir smaty comme template et j'ai quelques soucis avec malgres la doc
je voudrais afficher un menu qui vient d'un tableau
$Smarty = new Smarty_page();
$Smarty->assign($mv->getModel());
$Smarty->display($mv->getView());
le tableau (il est retourné par $mv->getModel)

Code : Tout sélectionner

Array ( [menu] => Array ( [0] => Array ( [lien] => 2 [nom] => Industrie ) [1] => Array ( [lien] => 13 [nom] => Entraînements ) [2] => Array ( [lien] => 23 [nom] => Variateurs Standards ) [3] => Array ( [lien] => 27 [nom] => index ) ) )

et mon code Smarty

Code : Tout sélectionner

{foreach from=$test.menu item=item key=key name=menu} <li><a href="{$key}">{$item}</a></li> {/foreach}
merci

au fait un autre lien pour Smarty et MCVhttp://www.phpsolmag.org/fr
c'est un pdf gratuit , il est dipo sur developpez.com mais j'ai pas retrouver le lien :?

Re: aide sur smarty faire( une boucle)

Posté : 11 oct. 2005, 18:20
par Xenon_54
Essaie comme ceci:

Code : Tout sélectionner

{foreach from=$test.menu item=item key=key name=menu} <li><a href="{$item.lien}">{$item.nom}</a></li> {/foreach}
http://smarty.php.net/manual/fr/languag ... oreach.php
Exemple 7.6

Tu sembles avoir basé ton script sur l'exemple 7.5. Le problème est que l'exemple 7.5 est basé sur un tableau associatif à un niveau où une clef et une valeur est définie.

Dans le cas présent, il est question d'un tableau contenant un tableau. Ainsi chaque item récupéré par la boucle sera un tableau. Il faudra donc accéder à chaque item.

Posté : 11 oct. 2005, 18:28
par jeff
je vien de tester mais je n'ai toujours aucune sortie :?

l'utilisation des bloc section est-il plus adapté?? :?:

Posté : 11 oct. 2005, 18:48
par Xenon_54
Oui, section a comme seul "défaut" de ne pas récupérer la clef de l'item courant (ce qui semble peu importer dans le cas présent)
$variable['menu'] = array(
	array(
		'lien' => 2,
		'nom' => 'Industrie'
	),

	array(
		'lien' => 13,
		'nom' => 'Entraînements'
	)
);

$smarty->assign('liens',$variable['menu']);

Code : Tout sélectionner

{section name=liens loop=$liens} <li><a href="{$liens[lien]}">{$liens[nom]}</a></li> {/section}