Pole jako parametr v URL z multiselectu
- jetpack
- Člen | 71
Zdravím,
mám formulář (Nette/Application/UI/Form) a v něm Multiselect.
Nette verze 2.0.12
$form->addMultiSelect('country','Země', array());
Před vykreslením do něj naplňuji data. Tzn, poté má data a není prázdný.
Problém je v tom, že když odešlu formulář tak mi vznikne URL jako:
?country[0]=5&country[1]=7&country[2]=68&country[3]=10
Nechci mít v URL adrese ty Indexy těch klíčů.Jen čistě:
country[]=5&country[]=8 … atd.
A další problém je v tom, že pokud odešlu jinačí hodnoty, které si
vyberu, tak se ty stávající vůbec nepřepíšou a zůstanou tam ty staré
hodnoty. A nové nepřibudou.
Díky za pomoc.
- pavel.simecek
- Člen | 11
Ahoj,
posílat data do multiselectu přes URL není šťasné řešení (URL může být potom potenciálně hodně dlouhá, mohlo by to dělat nepořádek i v navigaci Forward/Back v prohlížeči). Trváš na tom?
Nemohl bys je jednoduše předat do metody vytvářející formulář (např. skrz privátní atribut příslušného prezenteru)?
Já bych to asi dělal takto nějak:
<?php
protected function createComponentMyOwnForm() {
$form = new Form();
$form->addMultiSelect($name, $label, $items);
$form->setValue($selectedItems);
....
return $form;
}
?>
Nebo máš nějakej závažnej důvod, proč inicializaci multiselectu nemůžeš udělat během vytváření formuláře?