Как правильно записать функцию для Smarty3?

#1 23 марта 2015 в 00:52
  1. foreach ($outarray as $array){
  2. if($ind%3==0) echo "<tr><td width=33% valign=top>";
  3. else echo "<td width=33% valign=top>";
  4. $smarty = $inCore->initSmarty('components', 'com_gs_outsite.tpl');
  5. $scode = "";
  6. $snum = $array['snum'];
  7. $i=7;
  8. while($snum>0 && $i>=0){
  9. $q = $snum>=pow(2,$i)?1:0;
  10. if($q){
  11. $snum -= pow(2,$i);
  12. }
  13. $snm[$i] = $q; $i--;
  14. }
  15. $i=1;
  16. while($cfg['menu'.$i.'key']!=""){
  17. $checked = $snm[$i-1]?"checked":"";
  18. if($i>1) $scode .= "<br />";
  19. $scode .= $cfg['menu'.$i.'title'].'<input type="checkbox" name="'.$i.'" value=1 '.$checked.'>'; $i++;
  20. }
  21. unset($snm);
  22. $smarty->assign('cfg', $cfg);
  23. $smarty->assign('par', 0);
  24. $smarty->assign('moder', $moder);
  25. $smarty->assign('forms', $scode);
  26. $smarty->assign('array', $array);
  27. $smarty->display('com_gs_outsite.tpl');
  28. if($ind%3==2) echo "</td></tr>";
  29. else echo "</td>";
  30. $ind++;
  31. }
Как я понял отсюда нужно сделать так:
  1. foreach ($outarray as $array){
  2. if($ind%3==0) echo "<tr><td width=33% valign=top>";
  3. else echo "<td width=33% valign=top>";
  4. cmsPage::initTemplate('components', 'com_gs_outsite.tpl');
  5. $scode = "";
  6. $snum = $array['snum'];
  7. $i=7;
  8. while($snum>0 && $i>=0){
  9. $q = $snum>=pow(2,$i)?1:0;
  10. if($q){
  11. $snum -= pow(2,$i);
  12. }
  13. $snm[$i] = $q; $i--;
  14. }
  15. $i=1;
  16. while($cfg['menu'.$i.'key']!=""){
  17. $checked = $snm[$i-1]?"checked":"";
  18. if($i>1) $scode .= "<br />";
  19. $scode .= $cfg['menu'.$i.'title'].'<input type="checkbox" name="'.$i.'" value=1 '.$checked.'>'; $i++;
  20. }
  21. unset($snm);
  22. assign('cfg', $cfg);
  23. assign('par', 0);
  24. assign('moder', $moder);
  25. assign('forms', $scode);
  26. $assign('array', $array);
  27. display('com_gs_outsite.tpl');
  28. if($ind%3==2) echo "</td></tr>";
  29. else echo "</td>";
  30. $ind++;
  31. }
а вот как правильно здесь расставить -> непойму.
#2 23 марта 2015 в 13:35
тут все не правильно, вы намешали солянку из логики и php и смарти функции, для чего все это? не проще ли все данные передать в смарти и уже в шаблоне сделать логику вывода?
#3 23 марта 2015 в 14:24

тут все не правильно, вы намешали солянку из логики и php и смарти функции

maxisoft
Это я пробовал самостоятельно адаптировать скрипт с 1.9 на 1.10.6, а делал его парень который сейчас служит. smile
#4 23 марта 2015 в 14:37
Мне непонятно вот что
  1. cmsPage::initTemplate('components', 'com_gs_outsite.tpl')->
  2. $scode = "";
  3. $snum = $array['snum'];
  4. $i=7;
  5. while($snum>0 && $i>=0){
  6. $q = $snum>=pow(2,$i)?1:0;
  7. if($q){
  8. $snum -= pow(2,$i);
  9. }
  10. $snm[$i] = $q; $i--;
  11. }
  12. $i=1;
  13. while($cfg['menu'.$i.'key']!=""){
  14. $checked = $snm[$i-1]?"checked":"";
  15. if($i>1) $scode .= "<br />";
  16. $scode .= $cfg['menu'.$i.'title'].'<input type="checkbox" name="'.$i.'" value=1 '.$checked.'>'; $i++;
  17. }
  18. unset($snm);
  19. assign('cfg', $cfg)->
  20. assign('par', 0)->
  21. assign('moder', $moder)->
  22. assign('forms', $scode)->
  23. $assign('array', $array)->
  24. display('com_gs_outsite.tpl');
По рекомендации я вместо ; ставлю ->
убираю $smarty->
Но что мне делать с этим кодом:
$scode = "";
$snum = $array['snum'];
$i=7;
while($snum>0 && $i>=0){
$q = $snum>=pow(2,$i)?1:0;
if($q){
$snum -= pow(2,$i);
}
$snm[$i] = $q; $i--;
}
$i=1;
while($cfg['menu'.$i.'key']!=""){
$checked = $snm[$i-1]?"checked":"";
if($i>1) $scode .= "<br />";
$scode .= $cfg['menu'.$i.'title'].'<input type="checkbox" name="'.$i.'" value=1 '.$checked.'>'; $i++;
}
unset($snm);

Заключить его как то так
{xxxxxxxxxxxx}->
но чтото не работает так
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.