Exploitation d'un fetchArray
bonjour,
je rencontre des difficultés pour afficher une liste de mots-clés liés à des fichiers.
Voici le fichier components.class.php du module fichiers :
Code:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| public function executeMotsclefs(sfWebRequest $request)
{
//Liaison avec la table fichiers_motsclefs dans la langue par défaut
$q = Doctrine_Query::create()
->from('fichiersmotsclef f')
->addFrom('f.motclef m')
->leftJoin('m.Translation t')
->where('f.fichier_id = ?',$this->fichier);
$motsclefs_defaut = $q->fetchArray();
//Liaison avec la table fichiers_motsclefs dans la langue courantre de l'utilisateur
$q = Doctrine_Query::create()
->from('fichiersmotsclef f')
->addFrom('f.motclef m')
->leftJoin('m.Translation t WITH t.lang = ?', $this->getUser()->getCulture())
->where('f.fichier_id = ?',$this->fichier);
$motsclefs_courant = $q->fetchArray();
if($motsclefs_defaut)
{
//Création de la chaine à afficher
$chaine = '';
$i = 0;
//Par pertinence
foreach(array_reverse($motsclefs_courant, TRUE) as $motsclef=>$valeur)
{
$inter = current($valeur['motclef']['Translation']);
$tabcourant[$i] = $inter['intitule'];
$i = $i + 1;
}
$i = 0;
foreach(array_reverse($motsclefs_defaut, TRUE) as $motsclef_courant=>$valeur)
{
if($i<count($tabcourant))
{
if($tabcourant[$i] == '')
{
$inter = current($valeur['motclef']['Translation']);
$tabcourant[$i] = $inter['intitule'];
}
}
$i = $i + 1;
}
$this->motsclefs = $tabcourant;
}
else
{
$this->motsclefs = 'no';
}
} |
Ce modèle fonctionne bien avec notamment la partie suivante, affichage du libellé :
Code:
1 2
| $inter = current($valeur['motclef']['Translation']);
$tabcourant[$i] = $inter['intitule']; |
Cependant, pour des besoins de routing, je souhaiterais passer non seulement l'intitule du mot-clé mais la variable complète de manière à pouvoir écrire mon routing ainsi dans mon template :
Code:
<a href='".url_for('recherche_show_motsclef',$motsclef['Identifiant'])."' title='".$motsclef['Intitule']."'>".$motsclef['Intitule']."</a>
Sur une autre portion de code, j'avais ainsi réalisé l'opération d'affichage dans un autre template, mais je n'y arrive pas avec la requête ci-dessus.
Code:
1 2 3 4 5 6 7 8 9 10
| <!-- Parcours des mots-clés pour mise en tableau -->
<?php foreach($motsclefs as $motsclef): ?>
<?php $intitule=$motsclef->getIntitule();
$id=$motsclef->getId();
$mc[$id] = array('Id'=>$id,'Intitule'=>$intitule,'Identifiant'=>$motsclef); ?>
<?php array_push($tabmc,$mc[$id]);?>
<?php endforeach; ?>
<li><a href='".url_for('recherche_show_motsclef',$motsclef['Identifiant'])."' title='".$motsclef['Intitule']."'>".$motsclef['Intitule']."</a></li> |
Pourriez-vous m'indiquer comment procéder de la sorte avec un fetchArray, j'ai du mal avec l'extraction des données sous cette forme.
Merci par avance.