Jump to content

Smarty: boucle sur tableau multi-dimensionnel


Recommended Posts

Hello!!

 

Si une personne douée en smarty peut jeter un oeil sur ce que je viens de faire car cela ne fonctionne pas tout à fait, il doit manquer une petite chose mais là ça bloque :(

 

En PHP (cela fonctionne) :

 

foreach($categories AS $row)
{
$categories[] = intval($row['id_category']);
$categories[][intval($row['id_category'])] = $this->get_Products(intval($row['id_category']), intval($cookie->id_lang), $nb);
}

$smarty->assign(array(
'categories' => $categories,
'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
));

 

en SMARTY:

 

{foreach from=$categories item=category name=homeCategories key="i"}
{assign var='categoryLink' value=$link->getcategoryLink($category.id_category, $category.link_rewrite)}

<div class="col">
<h6><a href="{$categoryLink}" title="{$categoryName}">{$category.name}</a></h6>
<ul>
{assign var=val value=$category.id_category}
{foreach from=$category[$val] item=produit}
<li><a href="{$produit.link}" title="{$produit.name|escape:'htmlall':'UTF-8'}">{$produit.name|escape:'htmlall':'UTF-8'|ucfirst}</a></li>
{/foreach}
</ul>
</div><!-- //col-->
{/foreach}

 

Le deuxième foreach ne fonctionne pas si je laisse $category[$val] pourtant $val est à 22 lorsque que je le fais s'afficher. Lorsque que je mets directement $category[22] cela fonctionne, j'obtiens mon listing de produit de la catégorie correspondante.

 

Quelqu'un voit d'où vient l'erreur ?

 

Merci

Link to comment
Share on other sites

Bonjour,

 

J'ai du mal à comprendre votre tableau...

 

Que souhaitez vous faire exactement ?

 

En PHP, votre tableau, pour une première boucle, donne à peu près ça :

 

$categories[0] = x
$categories[1][x] = productst[x]

 

Cela ne veut.. rien dire.. enfin, pour moi.

 

Personnellement j'aurais fait comme ceci :

 

$id = 0
foreach($categories AS $row)
{
$categories[$id]['id_category'] = intval($row['id_category']);
$categories[$id]['products'] = $this->get_Products(intval($row['id_category']), intval($cookie->id_lang), $nb);
$id++;
}

 

Ensuite, dans smarty, pour accéder aux informations :

 

{foreach from=$categories item=category}
ID Category : {$category.id_category}
Products :
{foreach from=$category.products item=product}
Product name : {$product.name}
{/foreach}
{/foreach}

 

Fait sur mon PC normal, et non sur celui de dév. Vérifier les erreurs possibles..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...