Zpracování formuláře různými presentery

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

Prosím o radu..
Mám 3 presentery. Na každé stránce (nezáleží na tom, který presenter požadavek zpracovává) se zobrazuje pole pro vyhledávání (komponenta se volá ze základního layoutu). Ačkoliv DefaultPresenter i ErrorPresenter dědí od stejného předka, v prvním případě formulář funguje, v druhém ne – obsluha je však stejná. Zjistil jsem, že metoda je prostě v prvním případě volána, v druhém nikoliv. Co mi uniká?

class BasePresenter extends Presenter {
	public function createComponentSearchForm() {
		$form = new AppForm($this, 'searchForm');
		$form->addText('keyword', 'Hledaná fráze:');
		$form->addSubmit('go', 'Send');
		$form->onSubmit[] = callback($this, 'searchFormSubmitted');
		return $form;
	}
	public function searchFormSubmitted(AppForm $form) {
		$data = $form->getValues();
		// zpracování
	}
}

class DefaultPresener extends BasePresenter {
	// tohle se zavolá
	public function searchFormSubmitted(AppForm $form) {
		parent::searchFormSubmitted($form);
	}
	// nebo se může i zakomentovat a pak se zavolá metoda rodiče
	/*
	public function searchFormSubmitted(AppForm $form) {
		parent::searchFormSubmitted($form);
	}
	*/
}

class ErrorPresenter extends BasePresenter() {
	public function renderDefault() {}
	// tohle se nikdy nezavolá, ani metoda rodiče - proč?
	public function searchFormSubmitted(AppForm $form) {
		parent::searchFormSubmitted($form);
	}
}

Formulář pro vyhledávání by měl být použitelný z kterékoliv stránky. Pokud skončím na stránce 404 (ErrorPresenter), odeslání formuláře nefunguje – sice připojí do url ?do=searchForm-submit, ale nic se nestane a metoda se nezavolá..

Nette v. 1.0-dev

Editoval OK3 (21. 10. 2010 10:05)

sodae
Nette Evangelist | 250
+
0
-

celkem by mě zajímalo jak ti může fungovat když máš extends BasePresenter() v ErrorPresenteru