Jak ve formuláři předat pole hodnot?
- fary
- Člen | 155
Představte si, že máte ve formuláři toto:
<input type="text" name="items[title][x]" value="1">
<input type="text" name="items[title][y]" value="2">
a v metodě zpracovávající tento forulář chcete tyto hodnoty získat jako pole. Klasicky by se k tomu v PHP dalo přistoupit takto že?
$x = $_POST['items']['title']['x'];
$y = $_POST['items']['title']['y'];
Nette myslím umožňuje si tyto hodnoty vyzvednout takto:
$array = $form->getHttpData($form::DATA_KEYS, 'items');
Ovšem to vyhodí ‚Nette\InvalidArgumentException – Unknown data type‘.
- petr.jirous
- Člen | 128
Zkus to takto:
$array = $form->getHttpData($form::DATA_TEXT, 'items[title][]');
- pecan987
- Člen | 1
V šabloně vypisuji do formuláře inputy podle údajů z db ve formátu items[x][y], ale když se je snažím načíst pomocí
$array = $form->getHttpData($form::DATA_TEXT, 'items[]');
tak dostanu prázdné pole. Pokud bych se spokojil s tím, že musím napsat ten první klíč pole a načítat je takto:
$array = $form->getHttpData($form::DATA_TEXT, 'items[x][]');
Tak sice dostanu pole, ale potřeboval bych ho i s originálními klíči z formuláře, teď mi to vrátí pole s klíči 0,1,2 …
Dá se to nějak jednoduše provést? Díky za radu.
Edit: odpovím si sám, původní klíče dostanu takto:
$form->getHttpData($form::DATA_TEXT | $form::DATA_KEYS,'items[x][]');
Editoval pecan987 (9. 12. 2014 10:29)
- boob
- Člen | 21
Doplnim tento topic otazkou:
Je mozne zapisat nejako, ked mam viacrozmerne pole ako je napriklad to
items[x][]
, ale to x
mam tiez dynamicke? Teda
napriklad:
<input type="text" name="items[0][title]">
<input type="text" name="items[0][price]">
<input type="text" name="items[1][title]">
<input type="text" name="items[1][price]">
Pretoze neviem, kolko ich tam bude a potom neviem napriklad pri spracovavani formulara spravit nejaky cyklud a volat
$form->getHttpData($form::DATA_TEXT | $form::DATA_KEYS, "items[{$index}][]");