Formulář odešle data jen z jednoho containeru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- gog
- Člen | 5
Ahoj,
mám komponentu
protected function createComponentFilterForm() {
$form = new UI\Form();
$checkboxes = $form->addContainer('checkboxes');
foreach ($this->parameters as $parameter) {
$checkboxes->addCheckbox($parameter->id, $parameter->name);
}
$ordering = array(
'abc' => 'Abecedně',
'rating' => 'Podle hodnocení'
);
$other = $form->addContainer('other');
$other->addSelect('ordering', 'Řazení', $ordering);
$other->addHidden('current_id', $this->current_id);
$form->addSubmit('filter', 'Filtrovat');
$form->onSuccess[] = callback($this, 'filterFormSubmitted');
return $form;
}
a metodu která zpracovává formulář:
public function filterFormSubmitted(UI\Form $form) {
$values = $form->getValues();
Debugger::barDump($values);
}
Po odeslání vidím v debuggeru jen hodnoty kontejneru ‚other‘, kontejner ‚checkboxes‘ neobsahuje nic. Když si ale formulář pošlu metodou GET, tak vidím, že checkboxy byly zaškrtnuté.
Můžete mě navést, kde dělám chybu? Díky
- gog
- Člen | 5
Po odeslání formuláře je
$this->parameters
(výsledek dotazu na db) opravdu prázdný.
Plní se v metodě render()
. To je problém? Logicky si to
představuju tak, že načtu data z db → zobrazím příslušné checkboxy
→ odešlu formulář → vypíšu které checkboxy byly zaškrtnuty (k tomu
nepotřebuju vědět, co je v db).
Před odesláním proběhne cyklus foreach 2×, přesně podle plánu.
(když si do toho samotného kódu přidám několik checkboxů manuálně, vše funguje)