Сессии Joomla в цикле передают только одно значение
Мне нужно передать некоторые переменные из one PHP module
в another PHP module
в цикле и в то же время отображать модуль несколько раз. Я использую Joomla sessions
для передачи переменных, и это дает мне некоторые проблемы. Только второе значение переменной передается во второй модуль, что означает только значение, полученное переменной, когда loop is over
передается во второй модуль, хотя я использую sessions within the loop.
Первый модуль
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);
}
}
Второй модуль
$session = JFactory::getSession();
$x = $session->get('number');
echo $x;
Вывод, я получаю
4
4
4
4
Желаемый результат
1
2
3
4
Что случилось, и как его исправить? Спасибо заранее.
1 ответ
Хорошо, я вижу проблему сейчас. Это потому, что вы каждый раз переопределяете переменную сеанса в цикле.
Вместо этого попробуйте следующее:
Первый модуль
$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);
}
}
Второй модуль
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
echo $session->get('number' . $i);
}
Update
Не помещайте петлю в цикл. Вы можете просто получить то, что хотите:
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
$session->set('number' . $i, $i);
echo $session->get('number' . $i);
}