Bonjour,
Le contexte (cakephp 2.78) : mon taff est un petit element d'un projet plus gros, donc je dois m'adapter à la structure des tables est à l'ORM defini.
Soit deux tables campaign et bilan sans relations.
la table campaign contient entre autres un champ ordre: (1,2,3,4..integer).
La table bilan contient entre autres 4 champs: appel_1, appel_2,...appel_4.
Lorsque admin lance une campaign d'ordre 1 , je souhaiterais associer le contenu du champ appel_1 de la table bilans. Dans le controller ca fonctionne mon debug (suite au code ci dessous) , me récupère les champs appel_1 si Campaign.ordre=1 , ect idem pour 2,3,4.. dans la vue il ya deux foreach
-Vue: le foreach " $campagne_cours" affiche ce que je souhaite
-Vue le foreach "$appels "n'affiche que sur la derniere valeur soit appel_3 et ne boucle pas sur appel_1, appel_2
1/Controller
on cherche le nbre de campagne effectuées en utilisant le champ ordre
<?php
$d['campagne_cours']=$this->Treso2_campagne->find('all', array(
'fields'=>array('created','nom','ordre'),
'order'=>array('ordre ASC')
));
?>
<?php foreach ($d['campagne_cours'] as $k=>$v):
//On compte le nbre de campagnes pour associer combien de champ appel (appel_1,appel2, appel_3,..)
//on debute par reconstruire en concatenant le nom de l'appel en fonction de l'ordre des campagnes ordre=1 appel =appel_1
$champ_appel="appel_".$v['Treso2_campagne']['ordre'];
$d['appels']=$this->Treso2_bilan->find('all', array(
'fields'=>array($champ_appel),
'conditions'=>array('department_id'=>$this->Session->read('User.id')
),
'contain'=>false,
));
endforeach; ?>
// voir debug ci dessous
?>
// j'envoie mon tableau $d et $champ_appel à ma vue
$this->set(compact ('champ_appel'));
$this->set($d);
2/ ma vue // j'ai rajouté les num lignes pour le débug
//*286*/ <?php foreach($campagne_cours as $k=>$v):?>
//meme si je déplace la boucle de la ligne 291 <?php foreach($appels as $k1=>$v1):?> vers ici ca ne change rien.
<tr>
<td><?= $v['Treso2_campagne']['created'] ?></td>
<td><?= $v['Treso2_campagne']['nom'] ?></td>
<?php foreach($appels as $k1=>$v1):?>
//*292*/ <?php debug($champ_appel); //verif de la variable envoyée
/ /*293*/ debug($v1['Treso2_bilan'][$champ_appel]);?>
<td><?= $v1['Treso2_bilan'][$champ_appel];?></td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
<?php
die();
?>
Je souhaiterais que la vue boucle et affiche les valeurs appel_1 sur la ligne campagne1 , appel_2 sur la ligne campagne2, ect...
Debug du controller (qui affiche bien ce que je souhaite) puis Debug de la vue en dessous
//1/ resultats du debug controller
array(
(int) 0 => array(
'Treso2_bilan' => array(
'appel_1' => '20641.83'
)
)
)
/app/Controller/TreasurieDepsController.php (line 223)
array(
(int) 0 => array(
'Treso2_bilan' => array(
'appel_2' => '20641.83'
)
)
)
/app/Controller/TreasurieDepsController.php (line 223)
array(
(int) 0 => array(
'Treso2_bilan' => array(
'appel_3' => '21267.34'
)
)
)
// fin resultats debug controller
// 2/resultats du debug de la vue
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292)
'appel_3'
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293)
'21267.34'
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292)
'appel_3'
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293)
'21267.34'
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292)
'appel_3'
/app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293)
'21267.34'
Date |Campagne |Somme appelée (BUG=>qui n'affiche que rvaleur de appel_3 sur toutes les lignes)
2016-10-13 17:22:34 | Appel 1er versement 2016-2017 2016 2017 |21267.34
2016-10-15 14:31:48 |Appel 2nd versement 2016 2017 |21267.34
2016-10-15 14:32:01| Appel 3eme versement 2016 2017 |21267.34
**Merci bcp pour votre aide éclairée
Cordialement
Desbutes**