Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MartyIX
Člen | 217
+
0
-

Resim problem, kdy potrebuji zobrazit data, ktera mam v promenne.

Napr.

array("files" =>
      array(0 => "fileA",
            1 => "fileB",
            2 => "fileC",
            3 => "fileD",
            4 => "fileE"
      )
)

a nyni bych chtel toto zobrazit, a to takto:

<table>
<tr><td>fileA</td><td>fileB</td></tr>
<tr><td>fileC</td><td>fileD</td></tr>
<tr><td>fileE</td><td></td></tr>
</table>

Nejradeji bych to udelal obecne, tj. ze bych nadefinoval, jak bude vypadat jedna bunka a sablona by mi vyresila zbytek (tj. spravne vlozeni znacek <tr> a </tr> + vlozeni prazdnych bunek)

Jde neco takoveho udelat v sablonach v nette? Nebo budu muset pouzit nejakou php funkci, ktera mi vytvori dany kod?

Diky!

Mikulas Dite
Člen | 756
+
0
-

Šablony nic takového neumí, budeš si to muset napsat. Napadá mě obecná verze s iterací a modulo, ale možná je nějaké lepší řešení?

//EDIT: něco na způsob tohohle:

<?php
function controlTable($files, $columns){
    $table = Html::el('table');
    $position = 0;
    $row = null;
    foreach($files as $file){
        if($position==0){
            $row = $table->add('<tr>');
        }
        $row->add(Html::el('td')->setText($file));
        if($position==$columns-1){
            $row = $table->add('</tr>');
            $position = 0;
        }
        else{
            $position++;
        }
    }
    return $table;
}
?>

Asi ani nestojí za to nahrazovat ty row elementy za Html::el(‚tr‘), takhle se do nich vkládá snadněji.

Editoval Mikulas Dite (27. 2. 2010 15:34)

mkoubik
Člen | 728
+
0
-

A co tohle ?

MartyIX
Člen | 217
+
0
-

To je presne ono! Diky!

(A hodina vlastniho kodeni je fuc TIRED)

Mikulas Dite
Člen | 756
+
0
-

U řešení přímo v šabloně je problém s nedynamičností, resp. jasně, že ten počet sloupečků se dá dát do proměnné, ale je to hrozně wtf.