Po onSuccess se neprovede metoda

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

Dobrý den,

mám komponentu přímo v presenteru kde vykresluji formulář

<?php
 public function createComponentApplyToTerm() {
        $form = new Form();
        $term = new clean\Term($this->termId, $this->db);
        $activity = $term->getActivity();
        $family = new clean\Family($this->user->getId(), $this->db);
        $freeAdults = $term->getAvailable($family->getIds());
        // Za předpokladu, že jsou nějací uchazeči a nejedná se o plavání
        if (!empty($freeAdults) && $activity->style !== \clean\Activity::SWIMMING) {
            $form->addGroup('Uchazeči');

            $form->addSelect('applyer', 'Uchazeč', reOrderToAssoc($freeAdults, 'id', 'name'))
                    ->addRule(Form::FILLED, 'Zajdete název uchazeče')
                    ->setPrompt('Zvolte uchazeče');

            $form->addHidden('termId', $this->termId);

            if ($activity->isForAdults()) {
                $freeKids = $family->getKids();
                if (!empty($freeKids)) {
                    $form->addGroup('Děti k hlídání');
                    foreach ($freeKids as $kid) {
                        $form->addCheckbox('kid' . $kid->id, $kid->name);
                    }
                }
            }

            $form->addSubmit('applyToTermButton', 'Přihlásit se');

            $form->onSuccess[] = callback($this, 'applyToOne');
        }
        return $form;
    }
?>

a v šabloně

{control applyToTerm}

Formulář se vykreslí dobře, akorát už se nespustí applyToOne. Přitom ta je také v tom samém presenteru

<?php
public function applyToOne(Form $form) {
        if ($this->user->isLoggedIn()) {
            $values = $form->getHttpData();
            dump($values);
        }
    }
?>
vvoody
Člen | 910
+
0
-

V akom namespace mas ten Form?

Kaiz
Člen | 25
+
0
-

nad deklarací třídy mám

<?php
use Nette\Application\UI\Form;
?>
Tomáš Votruba
Moderator | 1114
+
0
-

Napadá mne zkusit to bez ověření přihlášení:

public function applyToOne(Form $form) {
	$values = $form->getValues(); // tak je to správně
	dump($values);
}

případně vyzkoušet přidat stejný callback pro onError.

Doporučuji také přečíst, jak pracovat s formulářem zvenčí:

Editoval Schmutzka (16. 9. 2012 14:43)

Kaiz
Člen | 25
+
0
-

Zkusil jsem dát onError a nic, udebral jsem kontrolu zda je přihlášen. A pořád nic. Ohledně defaultních hodnot tomu rozumím, ale já tam musím na základě těch hodnot generovat položky.