dynamický formulář – nevarcí data

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

Ahoj,

potřebuji mít nálsedující form.

<?php
$form = new Nette\Application\UI\Form();

        foreach ($rows as $row) {

            $form->addSelect($row->id, $row->name . " => ", $category);
        }
        $form->addHidden("id", $this->id);
        $form->addSubmit("submit", "Uložit");
        $form->onSuccess[] = $this->formCategoryFilterProces;
        return $form;
?>

Při odeslání a dump($form->getValues(TRUE)) mi to vyhodí jen ID, ale SELECTY to nevrátí.

Bohužel si zde nevím rady.

Díky

David Matějka
Moderator | 6445
+
0
-
  1. pouzij container pro ty selecty, at v tom mas poradek
  2. po odeslani se http data „mapuji“ na aktualni podobu formu, to znamena, ze i po odeslani musis v te tovarne na formular znovu vytvorit ty selecty, aby nette mohlo overit, ze se nekdo nesnazil podstrcit nejaky falesny data; melo by stacit nastavit id jako persistentni

Editoval matej21 (25. 7. 2013 22:37)

Šaman
Člen | 2666
+
0
-

Tuším, že je to proto, že se po odeslání opět vytvoří formulář a spárují se hodnoty z POSTu s položkami ve formuláři. A pravděpodobně se podruhé už vytvoří bez těch selectů.
Podívej se na replikátor, myslím, že by se na podobné věci měl používat.

Anebo mít formulář v samostatné třídě a sestavovat ho v konstruktoru.

batko
Člen | 219
+
0
-

matej21 napsal(a):

  1. pouzij container pro ty selecty, at v tom mas poradek
  2. po odeslani se http data „mapuji“ na aktualni podobu formu, to znamena, ze i po odeslani musis v te tovarne na formular znovu vytvorit ty selecty, aby nette mohlo overit, ze se nekdo nesnazil podstrcit nejaky falesny data; melo by stacit nastavit id jako persistentni

formulář vyrábím v komponentě, nastavil jsem @persistent ID jak v komponentě tak v presneteru a nic.

AD2 máš pravdu pokud vkládám data natvrdo a neberou id z get parametru tak je to OK, porsistent by měl pmoci ale nějak mi nefunguje…

Editoval batko (25. 7. 2013 23:15)

batko
Člen | 219
+
0
-

V komponentě volám $this->presenter->id a funguje to. Díky moc.