Úspešné odoslanie formulára

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

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

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

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íš.

Andurit
Člen | 131
+
0
-

Aj takéto vykreslenie mi len refreshne stránku :)
Určite mám nejakú dvojkovú verziu nette ale nepamätám si presne ktorú som stahoval.

Andurit
Člen | 131
+
0
-
{control searchForm}

som skúsil tiež a nič mi to nevypíše, okrem toho zdá sa, že to formulár odošle len sa nevykoná tá akcia po tom :)

Pavel Kravčík
Člen | 1196
+
0
-

A {? dump($form->errors)} Ti něco ukáže?

Andurit
Člen | 131
+
0
-
{dump ($searchForm->errors)}

mi vypíše

Undefined variable: searchForm

Čo mi príde až nerealne nakolko sa riadok predtym vykresluje s

{control searchForm}

(počúvol som tvoju radu a nahradil to na chvilu za manualne vykreslovanie)

Editoval Andurit (7. 8. 2015 12:15)

BigCharlie
Člen | 283
+
0
-

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)

Andurit
Člen | 131
+
0
-

Je nejaký command cez, ktorý to viem zistit?

CZechBoY
Člen | 3608
+
0
-

Jestli chceš zjistit verzi tak v DebugPanelu když najedes myší na Nette tak se to zobrazí verze „všeho“ na serveru.

CZechBoY
Člen | 3608
+
0
-

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)