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
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);
}
}
?>
- Tomáš Votruba
- Moderator | 1114
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)