[Smarty] Tabelle zellenweise füllen; letzte Zeile gesondert formatieren +Dummyzellen

theHacker

sieht vor lauter Ads den Content nicht mehr
Teammitglied
ID: 69505
L
20 April 2006
22.682
1.316
Moin.

Bevor ich mir irgendwas viel zu kompliziertes zusammenbau, möcht ich mal fragen, wie ich Folgendes am geschicktesten mache:

Ich habe eine Menge von n Datensätze, die nicht notwendigerweise durch k teilbar is. Die Datensätze sollen jetzt von links nach rechts in eine Tabelle mit k Spalten gebracht werden. Ist k kein Teiler von n, sollen die restlichen Zellen noch mit Dummy-Zellen (<td></td>) aufgefüllt werden.
Außerdem brauch ich für die letzte Zeile noch eine gesonderte Formatierung.

Mein aktueller Ansatz:
HTML:
{foreach name=footest from=$data item=dataitem}
  {if $smarty.foreach.footest.first}
    <tr>
  {elseif $smarty.foreach.footest.index % $k == 0}
    </tr>
    <tr> {* if(letzte Zeile) class="foobar" anhängen *}
  {/if}
  
  <td>
    {$dataitem}
  </td>
  
  {if $smarty.foreach.footest.last}
    {section name=dummycells start=($smarty.foreach.footest.index % $k) loop=$k}
      <td></td>
    {/section}
    </tr>
  {/if}
{/foreach}
Die Section für die Dummy-Zellen funktioniert nicht, weil ich den start-Parameter so nicht schreiben darf.
Und an die letzte Zeile komm ich auch nicht ran.
 
Divs nehmen und floaten...

Ansonsten versuch mal
PHP:
{section name=dummycells start=`$smarty.foreach.footest.index % $k` loop=$k}
(ist jetzt nur geraten)
 
Smarty error: [in tester.tpl line 30]: syntax error: invalid attribute name: '%' (Smarty_Compiler.class.php, line 1547) in <b>...smarty\libs\Smarty.class.php</b> on line <b>1095</b><br />
Ich hatte schon mal Probleme, wie ich was ausrechnen und in Smarty irgendwo in nem Block benutzen wollte.

Divs sind schlecht, außerdem bleibt das Problem, dass ich die letzte Zeile brauch und das krieg ich vorher auch ned raus.

Ich denk, ich werd in PHP vorher abzählen, dann kann ich Smarty die Infos geben, wann die letzte Zeile anfängt und wie viele Zellen er am Ende anhängen kann.

edit:
Jupp, das hat funktioniert. Is zwar nicht 100%ig sauber, dafür ist es unkompliziert und leicht lesbar.
 
Zuletzt bearbeitet:
Ich hab jetzt grade mal nachgeschaut... ich musste auch schonmal in smarty rechnen.

PHP:
{section name=dummycells start="`$smarty.foreach.footest.index % $k`" loop=$k}

So komisch wies aussieht, aber das sollte funktionieren. Sowas wie funktioniert jedenfalls:
PHP:
{{assign var="summe" value="`$summe+$value*2`"}}
Ich wusste sogar mal warum, aber mittlerweile nicht mehr wirklich.
 
Irgendwie krieg ich das mit dem Rechnen einfach ned auf die Reihe.
In der Art
Code:
{-$foo.bar.irgendwas|my_func}
muss ich was machen. Geht ned.

Hab ich jetzt vereinfacht bis zu
Code:
{-(42+4711)}
... nicht mal das geht:
syntax error: unrecognized tag: -(42+4711)
Verwende ich math, geht es teilweise:
Code:
{math equation="-x" x=$foo.bar.irgendwas|my_func}
geht zwar ohne Fehlermeldung, wendet allerdings my_func nur auf den Paramater x an und nicht auf das Ergebnis, d.h. es komm was anderes raus :-?

Und ne Möglichkeit der "Klammerung", erst {math}, dann my_func anwenden, hab ich auch ned gefunden.
 
Du könntest mit {math} das Ergebnis einer Variable assignen und darauf dann den Modifier anwenden.
 
Danke, das hatte ich dann auch gefunden.

Ist das die einzige/beste Möglichkeit ? Oder kann man auch irgendwie die Rechnung direkt verwenden ?