více inputů pod jedním jménem ala []
- ViliamKopecky
- Nette hipster | 230
nemůžu si vzpomenout, ani to najít. Jak-že se s Forms
dělá
to abych měl více hodnot z inputů v poli
<input name="pole[]" type="text" />
<input name="pole[]" type="text" />
<input name="pole[]" type="text" />
.
.
.
- kravčo
- Člen | 721
enoice napsal(a):
nemůžu si vzpomenout, ani to najít. Jak-že se s
Forms
dělá to abych měl více hodnot z inputů v poli<input name="pole[]" type="text" /> <input name="pole[]" type="text" /> <input name="pole[]" type="text" /> . . .
Určite funguje toto:
$container = $form->addContainer('pole');
$container->addText('t0', 'text0');
$container->addText('t1', 'text1');
čo vygeneruje
<input name="pole[t0]" type="text" />
<input name="pole[t1]" type="text" />
S číselnými indexami mi to brblalo – potrebuje alfanumerické meno komponentu, t.j. „0“, „1“, … sa mu nepozdáva. Mám pocit, že David na školení spomínal, že to ide, no zatiaľ som neprišiel na to, ako. No a bez indexov, to veru neviem…
- kravčo
- Člen | 721
LM napsal(a):
Index může být číselný ale musí to být string, takže
$c->addText('0', 'text')
by mělo fungovat.
Funguje, vďaka :)
Zrejme to má nejaký zmysel, prečo je striktne vyžadovaný typ string ako meno komponentu, no mňa dosť zmiatla chybová hláška:
Component name must be non-empty alphanumeric string, '1' is invalid.
Z nej to vyzerá, ako by som string podhodil, aj keď v skutočnosti tam je číslo. Človek znalý podľa kódu ľahko vidí, aké hlášky by to hádzalo pri poli, či vhodnom objekte.
Je pravda, že teraz, keď som si pozrel aj kód, ktorý k výnimke viedol, by som na to zrejme prišiel, ale zvačša človek nečíta kód, keď chybová hláška hovorí jasne…
- Vitek Jezek
- hledá kolegy | 285
jinak k pretypovani staci udelat "".$int (kde $int je integer : ) , vyzkouseno, funguje.
jen netusite, zda sezerou vsechny prohlizece, kdyz prvni znak je rovnou cislo? Treba v CSSku to tusim haprovalo, tak aby to nehaprovalo i tady – treba nejake mirne archaicky IE (6? 5.5?) by nemuselo ani odeslat dany input (u IE nic neni nemozne :D )
- krajaac
- Člen | 45
Whitek napsal(a):
jinak k pretypovani staci udelat "".$int (kde $int je integer : ) , vyzkouseno, funguje.
jen netusite, zda sezerou vsechny prohlizece, kdyz prvni znak je rovnou cislo? Treba v CSSku to tusim haprovalo, tak aby to nehaprovalo i tady – treba nejake mirne archaicky IE (6? 5.5?) by nemuselo ani odeslat dany input (u IE nic neni nemozne :D )
Staricke IE 5.5 nema se zpracovanim formulare typu
form[1]["neco"]
problem, pouzivam to v administraci a funguje to
v pohode (testovano v IEtester).
PetrP napsal(a):
Whitek napsal(a):
jinak k pretypovani staci udelat "".$int (kde $int je integer : ) , vyzkouseno, funguje.lepší je ovšem (string) $int ;]
$container->addText((string) $int, "$text")
je sice
programatorsky cistejsi ale $container->addText("$int", "$text")
je rychlejsi na napsani ;)
- PetrP
- Člen | 587
krajaac napsal(a):
$container->addText((string) $int, "$text")
je sice programatorsky cistejsi ale$container->addText("$int", "$text")
je rychlejsi na napsani ;)
Oboje vypadá lépe než "".$int
, ale u
(string) $int
je i pro jiného člověka než autora kódu jasné
co a proč to dělá.
- Jakub Šulák
- Člen | 222
Jak se dostanu po odeslání k odeslaným datům?
Jak přepsat do Nette tohle:
<?php
<input type="text" name="neco[]" value="a" />
<input type="text" name="neco[]" value="b" />
foreach ($_POST['neco'] as $item){
echo $item.'<br />';
}
?>
Díky předem za radu..
EDIT:
Pro ostatní kdo by hledal – $form->getValues(); :-)
Editoval Jakub Šulák (10. 12. 2008 13:20)
- David Grudl
- Nette Core | 8218
$subform = $form->addContainer('neco');
$subform->addText('0', 'Prvni:');
$subform->addText('1', 'Druhý:');