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

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

mkoubik
Člen | 728
+
0
-

Zkus si vypsat zároveň i $this->parameters, mám silné podezření, že po odeslání formuláře jsou z nějakého důvodu prázdné, kde tu proměnnou plníš?

Editoval mkoubik (28. 2. 2012 19:21)

gog
Člen | 5
+
0
-

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)

iguana007
Člen | 970
+
0
-

zkus to plnění přesunout do action

gog
Člen | 5
+
0
-

Paráda, když jsem plnění přesunul do action, tak to pomohlo, díky!