restoreRequest POST požadavku neodešle formulář

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

Zdravím.

V aplikaci používám následující flow:

// nepovolené odeslání formuláře - zachycení signálu a uložení requestu (psáno pseudokódem)
BasePresenter::startup = function {
	if ($this->signal !== NULL
			&& !$this->user->isAllowed($this->name, Helpers::signalToString($this->signal))) {

		$this->backlink = $this->storeRequest();
	}
};
// přihlášení uživatele přes fásbuk
HomepagePresenter::actionFacebookLogin = function () {
	$this->user->login( ... );
	$this->redirect('restore'); // restoreRequest se záměrně nevolá zde kvůli forwardu
};
// vyvolání uloženého requestu
HomepagePresenter::actionRestore = function () {
	$this->restoreRequest($this->backlink);
	$this->redirect('Homepage:default'); // přesměrování v případě, že request nebyl nalezen
};

Ze záhadných důvodů se mi po příhlášení neodešle formulář. $backlink se mi persistuje správně, dokonce se mi daří vydumpovat request tímto způsobem:

if ($this->request->hasFlag(Nette\Application\Request::RESTORED)) {
	dump($this->request); die();
}

Ukládaný a problémový request je typu POST a směřuje na Homepage:default se signálem myForm-form-submit. Výše uvedeným způsobem si ale request vydumpuji i v renderDefault(), kde už by měl být form dávno zpracován, ale to se nestane!

Prosím poradí někdo?

uestla
Backer | 799
+
0
-

Update:

Při změně metody formuláře na GET vše funguje. Nicméně by mne zajímalo, najde-li se zdatnější detektiv, který by objasnil nefunkčnost metody POST

uestla
Backer | 799
+
0
-

V rámci monologu nejspíše uzavřu pátrání:

Application\Request sice má metodu POST, nicméně metoda HTTP požadavku, podle kterého se detekce odeslání formuláře řídí, je GET, čili se odeslání nedetekuje a formulář se logicky nezpracuje.

Pokud dovolíte, nechal bych zde tohle vlákno minimálně jako niezabudku pro sebe. Děkuju.

Majkl578
Moderator | 1364
+
0
-

To je očekávané chování. Formulář nespustí eventy, pokud jde o forward.

uestla
Backer | 799
+
0
-

Pak je o to zvláštnější, že se eventy spustí s GET metodou i přes to, že request flag RESTORED má…