[templates] Vkladani bunek do tabulky
- MartyIX
- Člen | 217
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
Š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)
- Mikulas Dite
- Člen | 756
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.