Nefunkční onSuccess v továrně

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

Zdravím, mám podobný problém jako se zde již několikrát řešil a nemůžu na to přijít. Aplikaci mám rozdělenou na dva namespace FrontModule a AdminModule. V administraci mi formuláře normálně fungují, ale ve frontendu když chtěl vytvořit registrační formulář, tak jakoby se nevyvolala událost onSuccess… Přikládám kody:

public function createComponentRegistrationNewUserForm() {
	$form = new Form();
	....
	$form->onValidate[] = callback($this, 'validateRegistrationNewUserForm');
	$form->onSuccess[] = $this->registrationNewUserFormSubmitted;

	return $form;
    }

Zkoušel jsem dávat i form->onSuccess[] = callback($this, registrationNewUserFormSubmitted) ale taky nešlo.
onValidate funguje bezvadně.

public function validateRegistrationNewUserForm(Form $form) {
	$values = $form->getValues();
	...
}

ale onSuccess nejde:

V této metodě se neprovede vůbec nic.

public function registrationNewUserFormSubmitted(Form $form) {
	try {
	$values = $form->getValues();
	Debugger::dump($values);
	    // Vypíše hlášení
	    $this->flashMessage('Registrace proběhla v pořádku.', 'success');
	    $this->flashMessage('Na vámi zadaný email přijde klíč k potvrzení aktivního uživatele. Zkontrolujte si prosím svou schránku.', 'info');
	    // Zaznamená log
	    frontLog::log("Byla provedena nová registrace uživatele " . $values->name . " " . $values->surname . ".");
	    // Obnovíme stránku
	    $this->redirect('Default:default');
	} catch (\Nette\Application\ApplicationException $ex) {
	    // V případě chyby ji zaznamenáme a vypíšeme
	    frontErrorLog::log("Uživateli " . $values->name . " " . $values->surname . " (" . $values->email . ") se nepovedla registrace: " . $ex->getMessage());
	    $this->flashMessage("Registrace se nezdařila. Zkuste to prosím znovu.", "error");
	    $this->redirect('this');
	}

V latte mám klasicky {form registrationNewUserForm}. Tímto stylem mi to funguje všude v administraci, ale to je tak všechno. Po odeslání se provede interní validace + validace v dané metodě a nakonec nedojde k onSuccess. Adresa vypadá /registration/?do=registrationNewUserForm-submit. Kdyby někoho něco napadlo, dejte prosím vědět. Jebu se s tím už celej den a nemůžu na to přijít..

Milo
Nette Core | 1283
+
0
-

A bez onValidate se spustí? Zkus si nahodit i onError a dumpuj.

Eda
Backer | 220
+
0
-

Nejdřív se ujisti, zda používáš Nette\Application\UI\Form a ne jenom Nette\Forms\Form. Tohle většinou bývá příčina.

Blizard
Člen | 45
+
0
-

Eda napsal(a):

Nejdřív se ujisti, zda používáš Nette\Application\UI\Form a ne jenom Nette\Forms\Form. Tohle většinou bývá příčina.

Knihovnu používám

use \Nette\Application\UI\Form;
Blizard
Člen | 45
+
0
-

Milo napsal(a):

A bez onValidate se spustí? Zkus si nahodit i onError a dumpuj.

bez onValidate je to naprosto stejný. Jak se používá onError?

n.u.r.v.
Člen | 485
+
0
-

Blizard napsal(a):

Milo napsal(a):

A bez onValidate se spustí? Zkus si nahodit i onError a dumpuj.

bez onValidate je to naprosto stejný. Jak se používá onError?

To je divné – zkus udělat jen čistý form s jedním prázdným inputem a zkus to odeslat…Mě toto dělá, když je blbě vyplněno nějaké pole, nebo když já blbě předvyplním form…

japlavaren
Člen | 404
+
0
-

ak vykreslujes form manualne – vypisujes si v sablone erroy? skus to zamenit za {control registrationNewUserForm} a odoslat to tak. typoval by som chybu tam

Blizard
Člen | 45
+
0
-

japlavaren napsal(a):

ak vykreslujes form manualne – vypisujes si v sablone erroy? skus to zamenit za {control registrationNewUserForm} a odoslat to tak. typoval by som chybu tam

Todle mě nenapadlo, bude to pravděpodobně ono. Já mám klasicky validaci při vytváření komponenty, kdy se mi to zobrazuje přes flashMessage, ale některé chyby se asi teda zobrazují i přes výpis errorů. Musím na to mrknout. zatím díky, myslím že vyřešeno. Kdyžtak napíšu.