Výpis dat do tabulky a hromadné zpracování

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

Ahoj, jaká je praxe při tvoření datagridu pro hromadné zpracování záznamů? Vypsat data do tabulky a vygenerovat jim příslušný checkbox s id není problém. Jak na to ale pověsit formulárovou událost, kdy pro všechny zaškrtnuté checkboxy provedu nějakou akci?

<form>
<checkbox 1>Text 1
<checkbox 2>Text 2
<checkbox 3>Text 3
<selectbox>
<option>zobrazovat
<option>nezobrazovat
<option>smazat
<submit> zpracuj
</form>
sKopheK
Člen | 207
+
0
-

Stejně jako jakýkoliv jiný formulář zpracuješ odeslaná data. Checkboxy nějak pojmenuješ a pak zkontroluješ, které jsou zaškrtlé. Např.

$values = $form->getValues();

$id_selected = array();
foreach ($values as $key => $value)
{
    if (preg_match('#^' . preg_quote(self::LIST_CHECKBOX_PREFIX) . '([0-9]+)$#', $key, $matches) &&
        $value == TRUE)
    {
        $id_selected[] = $matches[1];
    }
}
...

kde LIST_CHECKBOX_PREFIX je konstanta s předponou názvu checkboxu (jména nemůžou začínat číslem). V poli $id_selected máš id všech prvků, které uživatel zaškrtl.

David Matějka
Moderator | 6445
+
0
-

@sKopheK: proc takhle slozite? mame containery, nebo v >=2.1 checkbox list

sKopheK
Člen | 207
+
0
-

Několik let staré řešení, které funguje prakticky nezávisle na verzi. Kontejnerům jsem nepřišel na chuť (pletu se, že musí být v kontejnerech všechno, nebo nic?) a checkbox list jsem ještě nepoužil.

David Matějka
Moderator | 6445
+
0
-

@sKopheK: pletes se. muzes pouzit normalni inputy i kontejner, do ktereho muzes dat zas dalsi inputy nebo dalsi kontejnery. (nebo vlastne nepletes, jelikoz Form dedi od Container, takze vlastne vzdy je vsechno v kontejnerech :) )