ループ内でone PHP module
からanother PHP module
にいくつかの変数を渡し、同時にモジュールを複数回表示する必要があります。変数を渡すためにJoomla sessions
を使用し、いくつかの問題を引き起こしています。変数の最後の値のみが2番目のモジュールに渡されます。つまり、loop is over
を使用しても、sessions within the loop.
が2番目のモジュールに渡されたときに変数によって取得された値のみを意味します
最初のモジュール
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);
}
}
2番目のモジュール
$session = JFactory::getSession();
$x = $session->get('number');
echo $x;
出力、私は得る
4
4
4
4
必要な出力
1
2
3
4
何が悪いのか、そしてそれをどのように修正するのですか?前もって感謝します。
わかりました。問題が発生しました。これは、ループ内のセッション変数を毎回オーバーライドしているためです。
代わりに、これを試してください:
最初のモジュール
$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);
}
}
2番目のモジュール
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
echo $session->get('number' . $i);
}
ループをループ内に配置しないでください。あなたは単にあなたが使いたいものを達成することができます:
$session = JFactory::getSession();
for ($i=1; $i<5; $i++)
{
$session->set('number' . $i, $i);
echo $session->get('number' . $i);
}