Odeslání formuláře zaškrtnutím checkboxu

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

Zdravím a prosím o radu.

Mám formulář s několika checkboxy a selectem a potřebuji, aby se mě po změně hodnoty checkboxu (později i selectu, ale teď řeším checkboxy) odeslal formulář.
Můj kód mi žádnou flash zprávu nevypíše, z toho usuzuji, že se nic neodešle.

<?php
    protected function createComponentStyleForm() {
        $form = new Form;
        $form->addCheckbox('obraz', 'Obraz')
                ->setAttribute('class', 'form-control input-sm input-bg');
        $form->addCheckbox('vaza', 'Vaza')
                ->setAttribute('class', 'form-control input-sm input-bg');

		// někde na foru jsem našel, že si tam mám přidat skryté pole, aby formulář vždy odeslal data
        $form->addText('hid', 'HID', 1)
                ->setValue("h");

        $form['obraz']->getControlPrototype()->onclick("submit();");
        $form['vaza']->getControlPrototype()->onclick("submit();");

        $kraje = array(
            'PH' => 'Hlavní město Praha',
            'ZK'  => 'Zlínský kraj' );
        $form->addSelect('region', 'Vyber kraj:', $kraje)
                ->setDefaultValue('PH');

        return $form;
    }

    public function styleFormSubmitted(UI\Form $form) {
        $this->flashMessage("OK", 'success');
      //  $this->redirect('Homepage:');
       // $this->redirect('this');
    }
?>

Ani jiné diskuse z fóra mě nepomohly, tak prosím o pomoc s konkrétním případem. Díky

Michal Vyšinský
Člen | 608
+
0
-

Ukaž kód funkce submit.

Editoval Michal Vyšinský (2. 1. 2015 13:17)

icanjan
Člen | 30
+
0
-

aha, tak submit jsem napsanou neměl. Dopsal jsem ji

<?php
    public function submit() {
        $this->flashMessage("OK - submit", 'success');
        styleFormSubmitted($this);
    }
?>

ale výsledek je pořád stejný. Nefunguje to. Potřebuji jen zavolat funkci styleFormSubmitted, kde si uložím zaškrtnuté checboxy do DB.

Zkoušel jsem i místo řádku

<?php
$form['obraz']->getControlPrototype()->onclick("submit();");
?>

tento

<?php
$form['obraz']->getControlPrototype()->onClick[] = callback($this, 'styleFormSubmitted');
?>

ale ani to mě nezavolalo styleFormSubmitted

Michal Vyšinský
Člen | 608
+
0
-

Ta submit funkce má být v js. Na straně PHP toto neuděláš.

Toto by ale mělo fungovat:

$form['obraz']->getControlPrototype()->onclick("this.form.submit()");
icanjan
Člen | 30
+
0
-

Tak jsem použil

$form['obraz']->getControlPrototype()->onclick("submit();");

přidal jsem řádek

$form->onSuccess[] = callback($this, 'styleFormSubmitted');

ale hlavně jsem ten select, který jsem vytvářel s těmi checkboxy, vykreslil ve formu a ne až za ním. Z nějakého důvodu to asi fungovalo, ale nezobrazovalo to tu flash zprávu.
Díky za navedení