Pole jako parametr v URL z multiselectu

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

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
+
0
-

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?