Multiplier – unikátní ID formulářových prvků

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

Ahoj.
Pomocí Multiplier vytvářím na stránce několik formulářů, ale inputy ve formu dostávají stejné ID.
Je možné nějak docílit toho, aby se jenerovalo unikátní ID?

Zkoušel jsem toto:
V latte vytvořit komponentu a předat ji požadí, ve kterém je vytvořena ($i):
{control "BookControl-$i", $books[$i]->name, $i}

takto to pak vypadalo v kódu:
` $control = new UI\Multiplier(function($name, $index) use ($service, $allBooks) {
$control = new BookControl();
return $control;
 });`

V té komponentě pak vytvářím formulář:
$form->addText('name_' . $this->index, 'Jmeno:')
a v latte mam toto: {label "name_$index" /}: {input "name_$index"}

Když se podívám do zdrojového kódu stánky je to vygenerováno správně, ale při odeslání to již nefunguje.
Do funkce processBookForm v $form->getValues() nejsou žádné údaje, které jsem tam vyplnil. Navíc očekával bych, že mi přijde v $form->getValues() například name_1, jenže v seznamu, který mi přijde je jenom name_ (bez čísla).

EDIT: ještě bych k tomu jenom dodal, že bez toho přidávání indexu k prvkům formáláře mi odeslání formuláře funguje správně.

Editoval cmc (8. 3. 2013 10:06)

bazo
Člen | 620
+
0
-

no tak tam ten index nepridavaj.

a stavim sa, ze hodnota $index je null

cmc
Člen | 6
+
0
-

Ano, ten $index je po odeslání formuláře null.

Když ho ale vynechám, tak to ale nevyřeší ten můj problém, na který se ptám. A stále budu mít na jedné stránce několik formulářů se stejným ID u všech formulářových prvků.