Úspešné odoslanie formulára
- Andurit
- Člen | 131
Ahojte,
bojujem s niecim úplne elementárnym no napriek tomu sa mi to nedarí
debugnuť. Skúšam po odoslaní formulára presmerovať užívateľa na
HOMEPAGE.
Presenter vyzerá nejako takto:
protected function createComponentSearchForm()
{
$form = new Nette\Application\UI\Form;
$form->addText('firstname', 'Jméno:');
$form->addText('surname', 'Jméno:');
$form->addSubmit('search', 'Hľadať');
$form->onSuccess[] = array($this, 'searchFormSucceeded');
return $form;
}
public function searchFormSucceeded(Nette\Application\UI\Form $form, $values)
{
$this->flashMessage('Ďakujeme, budete presmerovaný.');
$this->redirect('Homepage:');
}
a template nejako takto:
<div class="panel-body">
<form n:name=searchForm class=form>
<p><label n:name=firstname>FirstName: <input n:name=firstname size=20></label>
<p><label n:name=surname>Surname: <input n:name=surname></label>
<p><input n:name=search class="btn btn-default">
</form>
</div>
Príde mi, že je všetko v pohode a ani nette na mna nekričí so žiadnou chybou no napriek tomu po odoslaní formulára sa prakticky len refreshne stránka, samozrejme s URL na štýl:
?firstname=asd&surname=as&search=Hľadať&do=searchForm-submit
Nejaké rady ako to môžem debugovať?
- Pavel Kravčík
- Člen | 1196
Zkoušel si nejdříve bez manuálního vykreslení jestli nehodí chybu?
{control searchForm}
A asi máš starší verzi Nette? Novější myslím necpou parametr ‚do‘ do URL adresy.
- BigCharlie
- Člen | 283
Nemáš tam navěšené nějaké kontroly na některém z těch prvků? Pokud si nevypisuješ chyby ve formuláři, třeba ti selhala nějaká validace, kterou nevidíš.
- BigCharlie
- Člen | 283
neexistence proměnné mi připadá ok, to bys někde v presenteru v příslušné akci musel mít něco jako
$this->template->searchForm = $this['searchForm'];
nebo naopak v šabloně nevypisovat $searchForm->errors
, ale
$_control["searchForm"]->errors
. Ale chyby by se objevily při
defaultním vykreslení.
Ukaž celý presenter…
A verze nette by se hodila…
Editoval BigCharlie (7. 8. 2015 12:41)
- CZechBoY
- Člen | 3608
Zkus si tam ještě přidat onSubmit událost. Aspoň zjistis jestli se to odešle. Případně onError abys zjistil chyby.
<?php
$form->onError[] = function($form) {
dump($form->getErrors());
};
$form->onSubmit[] = function($form) {
dump($form);
};
?>
Nebo tak něco…
Editoval CZechBoY (8. 8. 2015 13:04)