Checkboxy v tabulce s daty
- Kenn
- Člen | 110
Potřeboval bych vyřešit formulář v tabulce s daty, kde by se u každého řádku dal zaškrtnout checkbox a pod tabulkou by bylo odesílací tlačítko, které odešle data. Tabulka se generuje podle dat s databáze. V podstatě potřebuju něco na principu phpMyAdmin, kdy si vyberu řádky a s těmi pak chci pracovat.
Popis hezký, ale nenapadá mě, jak něco takového vyřešit pomocí Nette/Forms. Nakopne mě někdo? :-), popřípadě řešil už někdo něco takového?
DataGrid nechci, na MySQL pomalý, navíc už je generování tabulky hotovo, takže potřebuju něco roztomilého, abych do tabulky nemusel moc vrtat :-).
- worsik
- Člen | 40
Jestli to chápu správně, tak ta tabulka je tvořena inputy, popř.
selectboxy a na konci řádku je checkbox.
Něco podobného jsem řešil a použil jsem při vytváření formu
containery.
<?php
$sites = dibi::query($sql)->fetchPairs()
foreach ($sites as $site_id => $site_name)
{
$form->addContainer($site_id);
foreach ($services as $svc_id => $svc_name)
{
$form[$site_id]->addContainer($svc_id);
$form[$site_id][$svc_id]->addText('unitcount',$svc_name)
->setOption('class','count')
->addCondition(Form::FILLED)
->addRule(Form::NUMERIC,$numeric);
$form[$site_id][$svc_id]->addTextArea('desc');
$form[$site_id][$svc_id]->addText('discount','sleva')
->setOption('class','discount')
->getControlPrototype()->readonly = TRUE
;
}
}
$form->addSubmit('add_services','Potvrdit vybrané služby')
->onClick[] = array($this,'serviceModifyHandler');
$form->addSubmit('cancel','Zrušit realizaci')
->onClick[] = array($this,'cancelRealizationHandler');
?>
K polím pak přistupuješ např. takto:
<?php
foreach ($sites as $site_id => $site_name)
foreach ($services as $svc_id => $svc_name)
$count = $this['modifyServices'][$site_id][$svc_id]['unitcount']->value;
?>
A form si vyrenderuješ ručně v šabloně pomocí foreach bloků
<?php
<table class="services" id="table_{$site_id}">
<tr>
<th>Služba</th>
<th>Jednotek</th>
<th>Cena za jednotku</th>
<th>Poznámka</th>
<th>Sleva (%)</th>
</tr>
{foreach $services as $svc_id => $svc_name}
<tr>
<td class="first">
{$form[$site_id][$svc_id]['unitcount']->label}
</td>
<td>
{$form[$site_id][$svc_id]['unitcount']->control->class($form[$site_id][$svc_id]['unitcount']->getOption('class'))}
</td>
<td>
{$prizes[$svc_id]},- Kč
</td>
<td>
<a class="pozn" rel="{$form[$site_id][$svc_id]['desc']->getHtmlId()}">Přidat</a>
{$form[$site_id][$svc_id]['desc']->control->class('pozn')}
</td>
<td class="{$form[$site_id][$svc_id]['discount']->getOption('class')}">
<span title="{$form[$site_id][$svc_id]['discount']->getOption('title')}">
{$form[$site_id][$svc_id]['discount']->control->class($form[$site_id][$svc_id]['discount']->getOption('class'))}
?</span>
</td>
</tr>
{/foreach}
</table>
?>
Je mi jasné, že bez kontextu jsou ty proměnné nejasné, ale smysl a postup práce by mohl být jasný :o)
Edit: Teď mi došlo, že tam žádný checkbox nemám, ale je to jedno, jaké form pole tam bude
Editoval worsik (3. 6. 2010 12:11)