J'ai besoin de passer des variables de one PHP module
à another PHP module
dans une boucle et affiche simultanément le module plusieurs fois. J'utilise Joomla sessions
pour passer des variables et cela me pose quelques problèmes. Seul le dernière valeur de la variable est transmis au deuxième module, ce qui signifie que la valeur atteinte par une variable lorsque le loop is over
est passé au deuxième module même si j'utilise sessions within the loop.
premier module
for ($i=1;$i<5;$i++)
{
$session = JFactory::getSession();
$session->set('number', $i);
// calling second module by position
$modules = JModuleHelper::getModules("second-position");
foreach($modules as $mod)
{
echo JModuleHelper::renderModule($mod, $attribs);
}
}
deuxième module
$session = JFactory::getSession();
$x = $session->get('number');
echo $x;
sortie, je reçois
4
4
4
4
sortie souhaitée
1
2
3
4
Qu'est-ce qui ne va pas et comment le corriger? Merci d'avance.
Ok je vois le problème maintenant. C'est parce que vous avez surchargé la variable de session dans la boucle, à chaque fois.
Au lieu de cela, essayez ceci:
premier module
$session = JFactory::getSession();
$modules = JModuleHelper::getModules('second-position');
for ($i=1; $i<5; $i++)
{
$session->set('number', $i);
foreach($modules as $mod)
{
echo JModuleHelper::renderModule($mod, $attribs);
}
}
Deuxième module
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
echo $session->get('number' . $i);
}
Ne mettez pas la boucle dans la boucle. Vous pouvez simplement réaliser ce que vous voulez en utilisant:
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
$session->set('number' . $i, $i);
echo $session->get('number' . $i);
}