AJAX selectbox bez definovaných options
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Pavel Kravčík
- Člen | 1205
Vytvářím formulář, kde mám obce a psč.
Políčko PSČ na svojí změnu volá signál (handlePsc()), ten podle PSČ vybere města do selectboxu. To funguje dobře.
V případě, že se vyskytne chyba ve formuláře → selectbox se vymaže (workaround přes onError). Pokud na tom chci nějakou podmínku, musím udělat callback a pracovat s getRawValue(). Stejně tak v onSuccess pak musím používat RawValue.
Problém je podle mě zde, protože nezadávám ty výchozí hodnoty, když je zadám – vše funguje normálně. Ale já je zadávat nechci. :) Přece tam nebudu cpát 17.500 záznamů všech měst.
$form->addSelect('obec_id','Název obce',array("17.500 řádek"))
nebo
$form->addSelect('obec_id','Název obce')
Kód je pro druhou variantu.
public function createComponentForm()
{
$form = new Form;
...
$form->addSelect('obec_id','Název obce')
->addRule(callback($this,'checkObec'));
...
$form->onError[] = $this->errorForm; //Naplnění selectboxu po chybě
}
public function checkObec($select)
{
//Otestování hodnoty
$select->getRawValue();
}
public function handlePsc($value)
{
//výběr měst z modelu
asort($citties);
$this['form']['obec_id']->setItems($citties);
}
public function errorForm(Form $form)
{
//Získat místa apod.
$this['form']['obec_id']->setItems($citties);
$this['form']['obec_id']->setValue($form->getValues()->obec_id);
}
Jak to řešíte vy? Existuje nějaký best practise? Žádný jsem nenašel.