IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Boucle FOREACH Smarty


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut [Smarty] Boucle FOREACH Smarty
    Bonjour,

    Je souhaiterai solliciter votre aide concernant un problème de boucle "foreach" dans le template Smarty (utilisation Prestashop).

    Mon but est de traiter un tableau de données dans un fichier .tpl via Smarty.
    Envoi des données vers le fichier .tpl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tableau = $this->_getRechercheTableau();
     
    $smarty->assign(array(
    			'tableau' => $tableau 
    		));
     
    return $this->display(__FILE__, 'mapage.tpl');

    Fonction _getRechercheTableau()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    private function _getRechercheTableau(){
     
    global $smarty, $cookie;
     
    $id_lang = intval($cookie->id_lang);
    $result = Db::getInstance()->ExecuteS('
    	           REQUETE DE RECHERCHE DE TOUS LES PRODUITS POUR OBTENIR LEUR ID');
     
    $data_all[] = array();
     
    foreach($result as $products){
    	$id_product= isset($products['id_product'])?$products['id_product']:'';
    	$variable = "Variable";
     
    // On crée ici le tableau de données.
    	$data_all[] = array('id_product' => $id_product, 'variable' => $variable);
    	}
     
    // On retourne ici le tableau de données.
    return array('mon_tableau' => $data_all);
     
    }

    Fichier mapage.tpl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {foreach from=$tableau item=data_see}
        	<p>{$data_see.id_product} : {$data_see.variable}</p>
    {/foreach}
    Seulement voilà, lorsque le fichier .tpl est exécuté, j'ai deux erreurs qui me disent que "Notice: Undefined index: id_product" et "Notice: Undefined index: variable".

    Je ne vois absolument pas d'où peut provenir mon erreur.

    Quelqu'un peut-il m'aider s'il vous plait ?

    Merci par avance de votre réponse.

  2. #2
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $smarty->assign(array(
    			'tableau' => $tableau 
    		));
    Pourquoi un tableau dans ton assign ?

    Ce ne serait pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $smarty->assign('tableau', $tableau);
    Sinon ton code à l'air ok...

    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    Bonjour,

    En fait je transmet d'autres variables via Smarty à mon fichier .tpl mais je ne les ai pas affiché ici pour ne pas embrouiller ceux qui voulaient m'aider dans mon problème (d'où l'utilisation d'un tableau).

    Si mon code à l'air ok ça me pose problème alors parce que je ne vois pas d'où l'erreur peut provenir !

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    J'ai vu une ou deux fois php/smarty mais il me semble que le foreach c pour des tableaux simples. Ce n'est pas plutot section qu'il faut utiliser ...

    je dis ça rapidement car tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {$data_see.id_product} : {$data_see.variable}
    Et que les erreurs portent sur un tableau assigné ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    Je viens d'utiliser {section} pour tester avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {section name=valeurs loop=$tableau}
           <p>id_product: {$tableau[valeurs].id_product}<br />
    	    variable: {$tableau[valeurs].variable}<br />
           </p>
    {/section}
    Mais maintenant pour chaque variable, j'ai un "Notice: Undefined offset: 0 in..."

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Autre chose quand tu assignes ton tableau dans smarty, tu devrais essayer avec un nom différent car dans {section} j'ai peur de la confusion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $smarty->assign(array('un_tableau' => $tableau ));

  7. #7
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    La partie de mon fichier .tpl (boucle section) te semble correcte ?
    Si ton tableau est un tableau indexé oui, sinon c'est une boucle foreach qu'il faut.

    Tu peux voir les variables dans le registre de smarty en mettant la balise {debug} n'importe où dans ton fichier .tpl (cela ouvrira une popup javascript) et cela te donnera le détail de ce que tu peux consommer dans ton template.

    @+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    Oui merci. Je connaissais également la fonction {debug} de Smarty.

    Je retrouve bien dans la console mon tableau agencé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $un_tableau
     
    Smarty_Variable Object (3)
    ->value = Array (1)
      mon_tableau => Array (8)
        0 => Array (0)
        1 => Array (2)
                id_product => "1"
                variable=> true
        2 => Array (2)
                id_product => "2"
                variable=> true
        3 => Array (2)
                id_product => "5"
                variable => 0
        4 => Array (2)
                id_product => "6"
                variable=> 0
        5 => Array (2)
                id_product => "7"
                variable=> true
        6 => Array (2)
                id_product => "8"
                variable=> 0
        7 => Array (2)
                id_product => "9"
                variable => 0
    ->nocache = false
    ->scope = "Smarty root"
    On peut en déduire la méthode à adopter pour exploiter ce tableau dans le fichier .tpl ?

  9. #9
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Côté PHP, tu peux faire un
    Je vais regarder ça...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    Merci pour la fonction dump() que je ne connaissais pas.

    Je cherche encore comment exploiter les données de mon tableau dans mon fichier .tpl sans succès malheureusement.

  11. #11
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Bonjour,

    je te demandais juste si tu peux copier-coller un var_dump($tableau) dans la réponse que je puisse voir la structure de ton tableau.

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSTL] boucle forEach pour deux liste en même temps
    Par ruud002 dans le forum Taglibs
    Réponses: 1
    Dernier message: 28/09/2006, 15h54
  2. [Tableaux] Boucle foreach inbriquée
    Par nebil dans le forum Langage
    Réponses: 17
    Dernier message: 10/09/2006, 11h40
  3. [C# VS 2005] Collection et boucle foreach
    Par SDragon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/07/2006, 19h43
  4. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  5. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo